假设我有一个功能区选项卡名为A (name="_tabA")和B (name="_tabB")。如何动态禁用或隐藏选项卡A或B?
我在RibbonControlsLibrary.dll中使用VS2010。
发布于 2011-08-31 04:30:03
<ribbon:RibbonTab Visibility="{Binding ShowThisRibbonTab, Converter=...}">其中,ShowThisRibbonTab是ViewModel的属性,转换器很可能是BooleanToVisibilityConverter。
或者,如果你不是在做MVVM,你可以给它一个名字并设置它的可见性
发布于 2011-09-19 03:33:21
没有MVVM
我可以很容易地用_tabA.Visibility = Visibility.Collapsed或Visibility.Visible隐藏/显示。
使用MVVM
.xaml.cs代码
使类也继承自INotifyProperty
主代码如下所示
public partial class MainWindow : RibbonWindow, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public const string NamePropertyName = "VisibleA";
private bool _visibleA = true;
public bool VisibleA
{
get
{
return _visibleA;
}
set
{
_visibleA = value;
RaisePropertyChanged(NamePropertyName);
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}转换器代码如下所示
[ValueConversion(typeof(bool), typeof(Visibility))]
internal class CheckVisibleA : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool? val = value as bool?;
string param = parameter as string;
if (value != null)
{
if (val == true)
{
return Visibility.Visible;
}
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}.xaml代码
此XAML有两个功能区选项卡:_ribboHome和_ribbonHelp。"VisibleA“属性控制可见性。当我单击复选框时,VisibleA属性打开/关闭,并且_ribbonHome相应地可见/折叠。
<ribbon:Ribbon DockPanel.Dock="Top" Title="teusje.wordpress.com" >
<ribbon:RibbonTab Header="Home" Name="_ribbonHome" Visibility="{Binding Path=VisibleA, Converter={StaticResource CheckVisibleA}, ConverterParameter=Show}">
<ribbon:RibbonGroup Name="Clipboard" Header="Clipboard">
<ribbon:RibbonButton Command="{StaticResource hwc}" CommandParameter="Hello, smcho" Label="Copy" LargeImageSource="Images/LargeIcon.png" />
</ribbon:RibbonGroup>
</ribbon:RibbonTab>
<ribbon:RibbonTab Header="Help">
<ribbon:RibbonGroup Name="_ribbonHelp" Header="Help this">
<ribbon:RibbonButton Command="{StaticResource hwc}" CommandParameter="Hello, smcho" Label="Copy Help" LargeImageSource="Images/LargeIcon.png"/>
<ribbon:RibbonCheckBox IsChecked="{Binding Path=VisibleA}"/>
</ribbon:RibbonGroup>
</ribbon:RibbonTab>https://stackoverflow.com/questions/7249216
复制相似问题