如何在按钮宽度中使用多点



我正在尝试将多键连接与XAML中具有按钮控件和宽度属性的转换器结合使用,但我无法正常工作。

转换器是:

public class ColumnsToWidthConverter: IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return 40;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

它是用于测试目的的40个编码。

XAML定义是:

<Button
    Height="{Binding ElementName=root,Path=KeyHeight}"
    FontSize="{Binding FontSize}"
    Content="{Binding Display}"
    Command="{Binding ElementName=root, Path=Command}"
    CommandParameter="{Binding}"
    Style="{StaticResource SelectedButton}">
    <Button.Width>
        <MultiBinding Converter="{StaticResource ColumnsToWidthConverter}">
            <Binding Path="Columns"/>
            <Binding Path="KeyHeight" ElementName="root"/>
        </MultiBinding>
    </Button.Width>
</Button>

该按钮是从ListView渲染的,并在ListView.ItemTemplate中定义。调试应用程序时,将传递转换器并返回40的值。object[] values参数包含在多点路径中传递的正确值。但是,按钮的宽度设置为其内容,而不是上面示例中的40个。

中。

ColumnsToWidthConverter在父 ListView.Resources中定义

<converter:ColumnsToWidthConverter x:Key="ColumnsToWidthConverter"/>

当我删除多键并将宽度属性设置为XAML定义中的40时,该按钮的渲染正确。

root元素是USERCONTROL本身,KeyHeightDependencyProperty

如何使用多接口设置按钮宽度?

问题不是来自多键,而是来自转换器本身。实现转换器时,您应该返回与控件预期的值类型(由于您是实施转换器的人,因此没有隐含的转换)。在这种情况下,Width属性是double,因此您应该返回相同类型的值:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    return 40d;
}

相关内容

  • 没有找到相关文章

最新更新