2013-08-16 132 views
5

我有三个单选按钮和三个组框,并根据单选按钮的选择,组框应该已经可见或折叠,但似乎没有在这里工作。我的构造函数的代码被执行,但似乎事情互相重叠。 Bool to Visibility转换器在WPF

<baseControls:MaintainTemplate Style="{StaticResource {x:Type baseControls:MaintainTemplate}}" TitleText="{Binding TitleText}"> 

    <baseControls:MaintainTemplate.TabSection> 
     <Grid> 
      <GroupBox> 
       <GroupBox.Header> 
        <TextBlock Text="Case Information" Style="{StaticResource TextBlockWhite}"/> 
       </GroupBox.Header> 
       <GroupBox.Content> 
        <Grid x:Name="GridMain"> 
         <Grid.RowDefinitions> 
          <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource MaxHeightRowDefinition}"/> 
          <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
          <ColumnDefinition Style="{StaticResource MaxWidthColumnDefinition}"/> 
          <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
         </Grid.ColumnDefinitions> 
         <Grid Grid.Column="1" x:Name="GridSelectCustomer"> 
          <Grid.RowDefinitions> 
           <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
           <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
           <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
           <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
          </Grid.RowDefinitions> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
           <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
          </Grid.ColumnDefinitions> 
          <TextBlock Grid.Row="1" Text="Select Customer" Style="{StaticResource TextBlockWhite}"/> 
          <ComboBox Grid.Row="1" Grid.Column="2" Width="150" ItemsSource="{Binding Customers}" 
          DisplayMemberPath="FirstName" SelectedValue="{Binding SelectedCustomer}"/> 
          <Button Grid.Row="1" Grid.Column="4" Content="Quick Search"/> 
          <Button Grid.Row="1" Grid.Column="6" Content="Add New Customer"/> 

          <TextBlock Grid.Row="3" Text="Reference No" Style="{StaticResource TextBlockWhite}"/> 
          <TextBox Grid.Row="3" Grid.Column="2"/> 
          <TextBlock Grid.Row="3" Text="Case No" Grid.Column="4" Style="{StaticResource TextBlockWhite}"/> 
          <TextBox Grid.Row="3" Grid.Column="6" Style="{StaticResource TextBoxReadOnly}"/> 
         </Grid> 
         <GroupBox Grid.Row="2" Grid.Column="1" x:Name="GroupBoxCustomerInfo"> 
          <GroupBox.Header> 
           <TextBlock Text="Customer Details" Style="{StaticResource TextBlockWhite}"></TextBlock> 
          </GroupBox.Header> 
          <GroupBox.Content> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
            </Grid.ColumnDefinitions> 
            <Grid.RowDefinitions> 
             <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
             <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
             <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
             <RowDefinition Style="{StaticResource MinHeightRowDefinition}"/> 
             <RowDefinition Style="{StaticResource AutoHeightRowDefinition}"/> 
            </Grid.RowDefinitions> 
            <TextBlock Style="{StaticResource TextBlockWhite}" Grid.Row="0" Grid.Column="1" Text="Name"/> 
            <TextBox Style="{StaticResource TextBoxReadOnly}" Grid.Column="3"></TextBox> 
            <TextBlock Style="{StaticResource TextBlockWhite}" Grid.Row="0" Grid.Column="5" Text="Phone No"/> 
            <TextBox Style="{StaticResource TextBoxReadOnly}" Grid.Column="7"></TextBox> 
            <TextBlock Style="{StaticResource TextBlockWhite}" Grid.Row="2" Grid.Column="1" Text="Father's Name"/> 
            <TextBox Style="{StaticResource TextBoxReadOnly}" Grid.Column="3" Grid.Row="2"></TextBox> 
            <TextBlock Style="{StaticResource TextBlockWhite}" Grid.Row="4" Grid.Column="1" Text="Address"/> 
            <TextBox Style="{StaticResource TextBoxMultiLineReadOnly}" Grid.Row="4" Grid.Column="3" ></TextBox> 
            <TextBlock Style="{StaticResource TextBlockWhite}" Grid.Row="2" Grid.Column="5" Text="Date Of Birth"/> 
            <TextBox Style="{StaticResource TextBoxReadOnly}" Grid.Column="7" Grid.Row="2"></TextBox> 

           </Grid> 
          </GroupBox.Content> 
         </GroupBox> 
         <GroupBox Grid.Row="4" Grid.Column="1" x:Name="GroupBoxCaseType"> 
          <GroupBox.Header> 
           <TextBlock Text="Case Type" Style="{StaticResource TextBlockWhite}"/> 
          </GroupBox.Header> 
          <GroupBox.Content> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MaxWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MaxWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource AutoWidthColumnDefinition}"/> 
             <ColumnDefinition Style="{StaticResource MinWidthColumnDefinition}"/> 
            </Grid.ColumnDefinitions> 
            <RadioButton Grid.Column="1" x:Name="rdbMonthlyInterest" Content="Monthly Interest" 
            Style="{StaticResource RadioButtonWhite}" IsChecked="{Binding IsMonthlyInterestChecked}"/> 
            <RadioButton Grid.Column="3" x:Name="rdbDailyInstallment" Content="Daily Installment" 
            Style="{StaticResource RadioButtonWhite}" IsChecked="{Binding IsDailyInstallmentChecked}"/> 
            <RadioButton Grid.Column="5" x:Name="rdbMonthlyInstallment" Content="Monthly Installment" 
            Style="{StaticResource RadioButtonWhite}" IsChecked="{Binding IsMonthlyInstallmentChecked}"/> 
           </Grid> 
          </GroupBox.Content> 
         </GroupBox> 
         <GroupBox Grid.Row="6" Grid.Column="1" Visibility="{Binding Path=IsMonthlyInterestChecked, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource VisibilityConverter}}" > 
          <GroupBox.Header> 
           <TextBlock Style="{StaticResource TextBlockWhite}">Monthly Interest</TextBlock> 
          </GroupBox.Header> 
         </GroupBox> 
         <GroupBox Grid.Row="6" Grid.Column="1" Visibility="{Binding Path=IsDailyInstallmentChecked, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource VisibilityConverter}}" > 
          <GroupBox.Header> 
           <TextBlock Style="{StaticResource TextBlockWhite}">Daily Installment</TextBlock> 
          </GroupBox.Header> 
         </GroupBox> 
         <GroupBox Grid.Row="6" Grid.Column="1" Visibility="{Binding Path=InMonthlyInstallmentChecked, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource VisibilityConverter}}" > 
          <GroupBox.Header> 
           <TextBlock Style="{StaticResource TextBlockWhite}">Monthly Installment</TextBlock> 
          </GroupBox.Header> 
         </GroupBox> 
        </Grid> 
       </GroupBox.Content> 
      </GroupBox> 
     </Grid> 
    </baseControls:MaintainTemplate.TabSection> 
</baseControls:MaintainTemplate> 

这里是转换器

namespace Finance.MainUI.Common.Converters 
    { 
    public class BoolToVisibilityConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return (bool) value ? Visibility.Visible : Visibility.Collapsed; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter,CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 
+0

哪里是你的转换器的代码? –

+0

@AndreyGordeev我已经添加了。请看一下。 – MegaMind

+0

Aaaaand消失了...... –

回答

4

更改Visibility结合的代码:

<GroupBox Grid.Row="7" Grid.Column="1" 
    Visibility="{Binding 
     RelativeSource={RelativeSource FindAncestor, 
      AncestorType={x:Type UserControl}} 
     Path=DataContext.IsMonthlyInterestChecked, 
     UpdateSourceTrigger=PropertyChanged, 
     Converter={StaticResource VisibilityConverter}}" > 

然后添加一个PR operty IsMonthlyInterestCheckedViewModel并绑定RadioButton它:

<RadioButton Grid.Column="0" x:Name="rdbMonthlyInterest" 
    Content="Monthly Interest" 
    Style="{StaticResource RadioButtonWhite}" 
    IsChecked="{Binding IsMonthlyInterestChecked}"/> 
+0

我已经在问题中添加了我的用户控件的完整代码。看看它是否可以做任何帮助 – MegaMind

+0

不,你没有。我仍然看不到你使用哪个命名空间。为什么你不能复制粘贴你的所有代码来质疑? –

+0

对不起,我认为这并不重要。我现在补充说。 – MegaMind