Code Behind中未显示命名的Xaml控件

问题描述 投票:1回答:2

我在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>
c# wpf caliburn.micro
2个回答
1
投票

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


1
投票

您无法在ViewModel中使用名称访问XAML元素。您只能在文件后面的代码中访问XAML元素。例如,您的XAML是MainWindow.xaml,那么您只能访问MainWindow.xaml.cs文件中的XAML元素。将MVVM模式应用于项目的主要目的是使视图(xaml)和业务逻辑(ViewModel)松散耦合。阅读更多关于MVVM here的信息。

© www.soinside.com 2019 - 2024. All rights reserved.