2013-11-05 120 views
0

試圖根據ComboBox的SelectedItem綁定GroupBox的Visibility屬性。我的組合框顯示FreqTypeCollection,我想隱藏/顯示相應的GroupBox。試圖將ComboBox SelectedItem綁定到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, 
}; 

回答

0

你在XAML一些錯誤

  1. 觸發器應綁定到的selectedIndex您的組合框(在你的情況下,觸發如何知道在組合框中新選擇的項目?)

    綁定=」 {綁定路徑= SelectedIndex,ElementName = ScheduleTypeComboBox}「

  2. 觸發器應該有默認值的設置器屬性

    setter屬性= 「能見度」 VALUE = 「坍塌」

它的所有代碼:

<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> 
相關問題