【问题标题】:Open new view clicking on DataGrid element (WPF xaml application)单击 DataGrid 元素(WPF xaml 应用程序)打开新视图
【发布时间】:2015-10-08 07:16:21
【问题描述】:

我有使用 MVVM 架构编写的 WPF 应用程序,所以我有模型、视图和视图模型。我的视图中有一个DataGrid,其中包含Products 的列表(其中包含几个字段:名称、余额等)。

我想添加额外的窗口/视图,点击DataGrid 中的元素后会出现。是否可以?如果有,怎么做?

我对 xaml 代码感兴趣,而不是 button1_Click

这就是我目前所拥有的:

<Window ...
    Height="600" Width="800"
    WindowState="Maximized">
<Grid>
    <DataGrid AutoGenerateColumns="False"
              CanUserAddRows="False"
              CanUserResizeRows="False"
              IsReadOnly="True"
              SelectionMode="Single"
              SelectionUnit="FullRow"
              ItemsSource="{Binding Path=Products}"
              SelectedItem="{Binding Path=CurrentProduct, Mode=TwoWay}"
              >
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=ProductName}"
                                Header="Product Name"
                                Width="*" />
            <DataGridTextColumn Binding="{Binding Path=Balance}"
                                Header="Balance"
                                Width="Auto" />
            ...
        </DataGrid.Columns>
    </DataGrid>
</Grid>

【问题讨论】:

  • 所以...您想调用一个命令,通过单击数据网格打开另一个视图,对吗?
  • @Kirenenko 欢迎所有想法。使用命令也可以。
  • 您也可以查看DataGrid.RowDetailsTemplatel的本教程:wpftutorial.net/datagrid.html
  • @Ugur 是的,你说得对,RowDetailsTemplate 是非常有用的功能,可惜我在程序中无法使用。

标签: c# wpf xaml mvvm datagrid


【解决方案1】:

当您右键单击数据网格的某些元素时,这将触发一个命令:

<DataGrid.InputBindings>
    <MouseBinding
        MouseAction="RightClick"
        Command="{Binding yourCommand,Mode=OneWay}"
    />
</DataGrid.InputBindings>

运行新视图:

var win = new Window();
win.Content = new yourNewViewModel();
win.SizeToContent = SizeToContent.WidthAndHeight; //Adjust window size to content
win.Show();

您必须在 App.xaml 中将 yourNewViewModel 与 yourNewView 链接:

<DataTemplate DataType="{x:Type yourProjectViewModel:yourNewViewModel}">
    <local:yourNewView/>
</DataTemplate>

不要忘记将 yourProjectViewModel 的 xmlns 添加到您的 App.xaml

【讨论】:

  • 谢谢,这会很有帮助。但是...我如何运行新视图?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 2015-05-05
  • 2014-10-09
  • 2013-08-29
相关资源
最近更新 更多