Wpf 尝试将ComboBox SelectedItem绑定到GroupBox可见性属性
尝试基于ComboBox的SelectedItem绑定GroupBox的可见性属性。我的组合框显示Wpf 尝试将ComboBox SelectedItem绑定到GroupBox可见性属性,wpf,Wpf,尝试基于ComboBox的SelectedItem绑定GroupBox的可见性属性。我的组合框显示FreqTypeCollection,我想隐藏/显示相应的GroupBox public Dictionary<FreqType, string> FreqTypeCollection { get { var d = new Dictio
FreqTypeCollection
,我想隐藏/显示相应的GroupBox
public Dictionary<FreqType, string> FreqTypeCollection
{
get
{
var d =
new Dictionary<FreqType, string>()
{
{FreqType.OneTimeOnly, "One time only"},
{FreqType.Daily, "Recurring - Daily"},
{FreqType.Weekly, "Recurring - Weekly"},
{FreqType.Monthly, "Recurring - Monthly"},
{FreqType.MonthlyRelativeToFreqInterval, "Monthly relative"}
};
return d;
}
}
<ComboBox Name="ScheduleTypeComboBox" ItemsSource="{Binding Path=FreqTypeCollection}" DisplayMemberPath="Value"
SelectedValuePath="Key" SelectedValue="{Binding Path=freq_type, Mode=TwoWay, Converter={StaticResource FreqTypeConverter}}">
<GroupBox Header="One time only" Name="OneTimeOnlyGroupBox" Visibility="Collapsed">
<GroupBox.Style>
<Style TargetType="GroupBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=freq_type}" Value="1">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
</GroupBox>
<GroupBox Header="Recurring-Daily" Name="DailyGroupBox" Visibility="Collapsed">
<GroupBox.Style>
<Style TargetType="GroupBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=freq_type}" Value="2">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
</GroupBox>
class FreqTypeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
else
{
FreqType f = (FreqType)value;
return f;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int rValue=(int)value;
return rValue;
}
}
public enum FreqType
{
[Display(Name = "One time only")]
[Description("Task will be scheduled one time only.")]
OneTimeOnly = 1,
[Display(Name = "Daily")]
[Description("Recurring daily.")]
Daily = 4,
[Display(Name = "Weekly")]
[Description("Recurring weekly.")]
Weekly = 8,
[Display(Name = "Monthly")]
[Description("Recurring monthly.")]
Monthly = 16,
[Display(Name = "Monthly relative")]
[Description("Recurring monthly relatively.")]
MonthlyRelativeToFreqInterval = 32,
};
公共字典类型集合
{
得到
{
变量d=
新字典()
{
{FreqType.OneTimeOnly,“仅限一次”},
{FreqType.Daily,“循环-每日”},
{FreqType.Weekly,“循环-每周”},
{FreqType.Monthly,“循环-每月”},
{FreqType.MonthlyRelativeToFreqInterval,“每月相对”}
};
返回d;
}
}
类FreqTypeConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
如果(值==null)
返回null;
其他的
{
FreqType f=(FreqType)值;
返回f;
}
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
int rValue=(int)值;
返回右值;
}
}
公共枚举类型
{
[显示(Name=“仅一次”)]
[说明(“任务只安排一次。”)]
OneTimeOnly=1,
[显示(Name=“每日”)]
[说明(“每日重复”)
每日=4,
[显示(Name=“Weekly”)]
[说明(“每周定期”)]
每周=8,
[显示(Name=“每月”)]
[说明(“每月定期”)]
每月=16,
[显示(Name=“每月相对”)]
[说明(“每月相对重复。”)]
月相对频率间隔=32,
};
您在xaml中有一些错误
<ComboBox x:Name="ScheduleTypeComboBox" ItemsSource="{Binding Path=FreqTypeCollection}" DisplayMemberPath="Value"
SelectedValuePath="Key" SelectedValue="{Binding Path=freq_type, Mode=TwoWay, Converter={StaticResource FreqTypeConverter}}"/>
<GroupBox Header="One time only" x:Name="OneTimeOnlyGroupBox">
<GroupBox.Style>
<Style TargetType="GroupBox">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedIndex, ElementName=ScheduleTypeComboBox}" Value="0">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
</GroupBox>
<GroupBox Header="Recurring-Daily" x:Name="DailyGroupBox">
<GroupBox.Style>
<Style TargetType="GroupBox">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem, ElementName=ScheduleTypeComboBox}" Value="1">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
</GroupBox>