2016-05-20 13 views
2

私はWPF MVVMでアプリケーションを開発しています。私はコンバータ、または*オートリターンで、Widthプロパティが必要です。私のコンバータは良い値を返しますが、無駄です。ここでは、私のXAML IMultiValueConverter幅自動または*

class FicheWidthVisibilityConverter : IMultiValueConverter 
{ 
    int SizeDatagrid = 0; 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 

     var VisibilityFiche = (Visibility)values[1]; 
     var NewSizeDataGrid = System.Convert.ToInt32(values[0]); 

     //Récupère la taille AUTO du datagrid 
     if (SizeDatagrid == 0) 
      SizeDatagrid = NewSizeDataGrid; 

     //Si la taille di datagrid a changé 
     if (NewSizeDataGrid < SizeDatagrid) 
     { 
      if (VisibilityFiche == Visibility.Visible) 
       return "*"; 
     } 
     return "Auto"; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

} 

コンバータとミリアンペアビューでは

<ColumnDefinition> 
      <ColumnDefinition.Width> 
       <MultiBinding Converter="{StaticResource FicheWidthVisibilityConverter}" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"> 
        <MultiBinding.Bindings> 
         <Binding ElementName="Datagrid" Path="ActualWidth"/> 
         <Binding ElementName="Fiche" Path="Visibility"/> 
        </MultiBinding.Bindings> 
       </MultiBinding> 
      </ColumnDefinition.Width> 
     </ColumnDefinition> 

答えて

1

あなたはタイプGridLengthの代わりに、プレーンな文字列の値を返す必要があります。したがってreturn "*";return new GridLength(1, GridUnitType.Star);return "Auto"と置き換えてreturn GridLength.Auto;と置き換える必要があります。 GridLengthクラスはSystem.Windows名前空間に属します。

+0

ありがとうございました!それは完全に動作します! –

関連する問題