C# XAML IMultiValueConverter宽度自动或*
我正在WPF MVVM中开发一个应用程序。我想要一个宽度属性,带有转换器,或者*自动返回。我的转换器返回良好的值但是没有用。这里,我的转换器C# XAML IMultiValueConverter宽度自动或*,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在WPF MVVM中开发一个应用程序。我想要一个宽度属性,带有转换器,或者*自动返回。我的转换器返回良好的值但是没有用。这里,我的转换器 class FicheWidthVisibilityConverter : IMultiValueConverter { int SizeDatagrid = 0; public object Convert(object[] values, Type targetType, object parameter, CultureInfo
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();
}
}
class FicheWidthVisibilityConverter:IMultiValueConverter
{
int-SizeDatagrid=0;
公共对象转换(对象[]值,类型targetType,对象参数,CultureInfo区域性)
{
var VisibilityFiche=(可见性)值[1];
var NewSizeDataGrid=System.Convert.ToInt32(值[0]);
//数据网格中的Récupère la taille AUTO du datagrid
如果(SizeDatagrid==0)
SizeDatagrid=NewSizeDataGrid;
//这是一个数据网格
if(NewSizeDataGrid
在我看来
<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>
您应该返回类型为
GridLength
的值,而不是普通字符串。所以你应该替换返回“*”使用返回新的GridLength(1,GridUnitType.Star)
和返回“Auto”
并返回GridLength.Auto代码>GridLength
类属于System.Windows
命名空间