我在WPF中使用caliburn.micro
。尽管我将x:Name
设置为我的元素(它是xaml格式),但我在后面的代码(在我的ViewModel中)中看不到元素(按钮、文本框、网格等)。就好像x:Name是私有的
例如:
<Button x:Name="mybutton">
<StckPanel Orientation="Horizontal">
<Image Width="30" Source="/Resources/edit.png" />
<TextBlock Margin="5" FontSize="15" Text="Update">
</TextBlock>
</StackPanel>
</Button>
发布于 2019-03-26 08:10:43
X:Name不会将视图元素暴露给ViewModel,事实上,正如Clemens正确指出的那样,您不应该尝试从View Model访问视图元素。
如果您打算使用Caliburn Micro约定在Button Click (从上面的xaml)上调用一个方法,那么您应该编写一个对应于x:Name的方法。例如,
public void mybutton()
{
// Do something
}
这将在每次单击带有x:Name mybutton
的按钮时调用mybutton() method
。
发布于 2019-03-26 14:38:44
您不能在ViewModel中使用名称访问您的XAML元素。只能在代码隐藏文件中访问XAML元素。例如,您的XAML是MainWindow.xaml
,那么您只能访问MainWindow.xaml.cs
文件中的XAML元素。在项目中应用MVVM模式的主要目的是使视图(xaml)和业务逻辑(ViewModel)松散耦合。阅读有关MVVM here的更多信息。
https://stackoverflow.com/questions/55345776
复制相似问题