我正在WPF MVVM中开发一个应用程序。我希望有一个宽度属性,有一个转换器,或者*自动返回。我的转换器返回好的值,但没有效果。这里,我的转换器
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>发布于 2016-05-20 13:12:42
您应该返回GridLength类型的值,而不是普通字符串。因此,您应该将return "*";替换为return new GridLength(1, GridUnitType.Star);,将return "Auto"替换为return GridLength.Auto;。GridLength类属于System.Windows命名空间
https://stackoverflow.com/questions/37347461
复制相似问题