xaml代码是:
<DockPanel>
<DataGrid x:Name="Quote" AutoGenerateColumns="False">
<DataGrid.Columns >
<DataGridTextColumn Header="Code" Binding="{Binding Code}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Quantities" Binding="{Binding Quantities}"/>
<DataGridTextColumn Header="Price" Binding="{Binding Price}"/>
<DataGridTextColumn Header="Cost" Binding="{Binding Cost}"/>
<DataGridCheckBoxColumn Header="Done" Binding="{Binding Done}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Border BorderThickness="0" Background="Beige" Padding="10">
<StackPanel Orientation="Horizontal">
<Button Command="{Binding Path=DataContext.Renew1Command, RelativeSource= {RelativeSource FindAncestor,AncestorType=DataGrid}}">Call Command</Button>
</StackPanel>
</Border>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</DockPanel>
模型是:
public class StockModel
{
public event PropertyChangedEventHandler PropertyChanged;
public void propChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propName));
}
}
private string code;
public string Code
{
get { return code; }
set
{
code = value;
this.propChanged("Code");
}
}
....
private bool done;
public bool Done
{
get { return done; }
set
{
done = value;
this.propChanged("Done");
}
}
public DelegateCommand Renew1Command;
public void Renew1(object obj)
{
MessageBox.Show("Hello Command");
System.Console.WriteLine("Hello Command");
}
public StockModel()
{
Renew1Command = new DelegateCommand();
this.Renew1Command.ExecuteAction += this.Renew1;
}
}
最后我通过以下方式初始化数据源:
List<StockModel> stockList = new List<StockModel>();
stockList.Add(new StockModel() { Code = "601919", Cost = "8888", Name = "CIB", Done = true, Price = "16.1", Quantities = "200" });
stockList.Add(new StockModel() { Code = "601919", Cost = "8888", Name = "CIB", Done = false, Price = "16.1", Quantities = "100" });
stockList.Add(new StockModel() { Code = "601919", Cost = "8888", Name = "CIB", Done = true, Price = "16.1", Quantities = "100" });
stockList.Add(new StockModel() { Code = "601919", Cost = "8888", Name = "CIB", Done = true, Price = "16.1", Quantities = "200" });
this.Quote.ItemsSource = stockList;
DataGridTextColumn可以显示绑定源的数据, 但我无法点击DataTemplate按钮从模型中调用相应的动作。 如何修复绑定? 呼叫命令
答案 0 :(得分:0)
转到StockModel类,替换“public DelegateCommand Renew1Command;”使用“public DelegateCommand Renew1Command {get; set;}”。 问题将得到解决。