我在WPF中使用caliburn.micro
。虽然我将x:Name
设置为我的元素(在xaml中),但我看不到我的代码中的元素(按钮,文本框,网格等)(在我的ViewModel中)。好像x:名称是私有的
例如:
<Button x:Name="mybutton">
<StckPanel Orientation="Horizontal">
<Image Width="30" Source="/Resources/edit.png" />
<TextBlock Margin="5" FontSize="15" Text="Update">
</TextBlock>
</StackPanel>
</Button>
X:Name没有将View Elements公开给ViewModel,事实上,正如Clemens正确指出的那样,你不应该尝试从View Model访问View Elements。
如果您打算使用Caliburn Micro约定在Button Click(从xaml上方)调用方法,则应编写与x:Name对应的方法。例如,
public void mybutton()
{
// Do something
}
每次点击x:Name mybutton() method
的按钮时,这将调用mybutton
。
您无法在ViewModel中使用名称访问XAML元素。您只能在文件后面的代码中访问XAML元素。例如,您的XAML是MainWindow.xaml
,那么您只能访问MainWindow.xaml.cs
文件中的XAML元素。将MVVM模式应用于项目的主要目的是使视图(xaml)和业务逻辑(ViewModel)松散耦合。阅读更多关于MVVM here的信息。