我们说我有一个这样的按钮:
<Button x:Name="DeleteItem" Content="Delete item" Height="20" Width="100" Margin="0,0,10,0" VerticalAlignment="Top" HorizontalAlignment="Left"
Command="{Binding DeleteItem}" CommandParameter="{Binding Path=SelectedItem, ElementName=MainWindowObject}"/>
MainWindowObject是此按钮所在的窗口,因此CommandParameter绑定正在读取&#39; SelectedItem&#39;的值。我在代码隐藏中制作的属性,如下所示:
public object SelectedItem
{
get
{
switch (CurrentTab)
{
case TabType.Author:
return this.AuthorGrid.SelectedItem;
default: // BookGrid is the default grid
return this.BookGrid.SelectedItem;
}
}
}
基本上它应该获得网格当前选中的项目。我之所以没有直接使用&#34; Binding ElementName = Grid,Path = SelectedItem&#34;或类似的东西是因为它将在开关中选择的网格取决于&#39; CurrentTab&#39; property,这是另一个属性,告诉我哪个TabItem是TabControl中的活动TabItem。
问题我所拥有的是该程序会读取&#39; SelectedItem&#39;在启动时输入一次值,每次调用Command时它都会使用那个旧的陈旧值。我需要的是重新运行&#39; SelectedItem&#39;每次命令运行时,属性都会获得一个新的新值。
所以基本上我需要知道每次调用Command时如何动态更新绑定的值。任何人都知道我如何能够以声明的方式做出类似的事情,而不会在我的代码隐藏中造成混乱?