[英]WPF: How to bind and update display with DataContext
我正在尝试执行以下操作:
我有一个带有几个选项卡的TabControl。 每个TabControlItem.Content都指向PersonDetails,后者是一个UserControl。每个BookDetails具有一个称为IsEditMode的依赖项属性。
我希望每当选定的选项卡更改时,都将更新TabControl之外的名为ToggleEditButton的控件。
我以为可以通过更改ToggleEditButton数据上下文来做到这一点,因为它似乎不起作用(但是我是WPF的新手,所以我可能会离开)
更改数据上下文的代码:
private void tabControl1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
if (e.Source.Equals(tabControl1))
{
if (tabControl1.SelectedItem is CloseableTabItem)
{
var tabItem = tabControl1.SelectedItem as CloseableTabItem;
RibbonBook.DataContext = tabItem.Content as BookDetails;
ribbonBar.SelectedTabItem = RibbonBook;
}
}
}
}
BookDetails下的DependencyProperty:
public static readonly DependencyProperty IsEditModeProperty =
DependencyProperty.Register("IsEditMode", typeof (bool), typeof (BookDetails),
new PropertyMetadata(true));
public bool IsEditMode
{
get { return (bool)GetValue(IsEditModeProperty); }
set
{
SetValue(IsEditModeProperty, value);
SetValue(IsViewModeProperty, !value);
}
}
以及相关的XAML:
<odc:RibbonTabItem Title="Book" Name="RibbonBook">
<odc:RibbonGroup Title="Details" Image="img/books2.png" IsDialogLauncherVisible="False">
<odc:RibbonToggleButton Content="Edit"
Name="ToggleEditButton"
odc:RibbonBar.MinSize="Medium"
SmallImage="img/edit_16x16.png"
LargeImage="img/edit_32x32.png"
Click="Book_EditDetails"
IsChecked="{Binding Path=IsEditMode, Mode=TwoWay}"/>
...
我要完成两件事:让按钮反映可见选项卡的IsEditMode,并让按钮更改属性值而没有任何代码(如果可能)。
任何帮助将不胜感激。
您可以通过使用ElementName
绑定直接绑定到TabControl的SelectedItem来完成所需的操作:
<odc:RibbonTabItem Title="Book" Name="RibbonBook">
<odc:RibbonGroup Title="Details" Image="img/books2.png" IsDialogLauncherVisible="False">
<odc:RibbonToggleButton Content="Edit"
Name="ToggleEditButton"
odc:RibbonBar.MinSize="Medium"
SmallImage="img/edit_16x16.png"
LargeImage="img/edit_32x32.png"
Click="Book_EditDetails"
IsChecked="{Binding ElementName=myTabControl, Path=SelectedItem.IsEditMode, Mode=TwoWay}"/>
其中myTabControl
是TabControl的名称( x:Name
属性的值)。 您不再需要处理SelectionChanged
事件来更新按钮的DataContext
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.