为了账号安全,请及时绑定邮箱和手机立即绑定

带有按钮列的 WPF MVVM 网格

带有按钮列的 WPF MVVM 网格

C#
回首忆惘然 2021-12-25 16:45:36
我正在遵循 MVVM 模式。我有一个包含几列的网格,其中一列包含 Button。单击按钮我想打开对话框,该对话框将显示与单击按钮的特定行相关的数据。但问题在于绑定,因为我无法将控件与视图模型绑定。<Button  Command="{Binding Path=ParentRow.DataContext,          RelativeSource={RelativeSource AncestorType={x:Type UserControl}},         UpdateSourceTrigger=PropertyChanged, Mode=Default}"          lib:Event.Binding="Click.[**NameOfViewModelMethod**]" >                                      </Button>  
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你没有显示你所有的代码和上下文,但它应该像这样工作我假设你在一个用户控件中校准父数据上下文......(以列表视图为例):


<ListView   ItemsSource="{Binding listFromDataContext, IsAsync=True}" Margin="3,51,0,10"    >


<ListView.ItemTemplate >

<DataTemplate>

<grid>

 <Button   Command="{Binding DataContext.MyMethode, RelativeSource={RelativeSource AncestorType={x:Type controls:thisUserControl}}}" CommandParameter="{Binding}"   />

</grid>

</DataTemplate>

  </ListView.ItemTemplate >

</ListView>

然后在模型中


      private ICommand _MyMethode;

            public ICommand MyMethode

            {

                get

                {

                    return _MyMethode ?? (_MyMethode = new CommandHandler<MyModel.item>(x => showMessage(x), _canExecute));

                }

            }


public void showMessage(MyModel.item x)

{

MessageBox.Show(x.Info);

}


查看完整回答
反对 回复 2021-12-25
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

首先,如果您Button在 a 中GridDataContext则不需要设置Pathlike Path=ParentRow.DataContext

你的Command绑定应该是这样的:

<Button Command="{Binding YourVMICommand"} />

您必须public ICommand在 VM 中定义一个,然后将其绑定到按钮。


查看完整回答
反对 回复 2021-12-25
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信