首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF MultiBinding椭圆填充

WPF MultiBinding椭圆填充
EN

Stack Overflow用户
提问于 2018-01-22 22:46:55
回答 1查看 439关注 0票数 0

我无法让Ellipse.Fill上的MultiBinding正常工作。我确实让(单个)绑定正常工作,另外还有Ellipse.Tooltip上的MultiBinding

代码语言:javascript
复制
<Ellipse Margin="210,56,0,0" Fill="{Binding InspectorPC, Converter={StaticResource statusButtonConverter}, Mode=OneWay}">
    <Ellipse.ToolTip>
        <MultiBinding Converter="{StaticResource statusStringConverter}" Mode="OneWay">
            <Binding Path="InspectorPC"/>
            <Binding Path="InspectorPCPing"/>
            <Binding Path="InspectorPCReadHD"/>
        </MultiBinding>
    </Ellipse.ToolTip>
</Ellipse>

但我想要这样的东西:

代码语言:javascript
复制
<Ellipse Margin="210,56,0,0">
    <Ellipse.Fill>
        <MultiBinding Converter="{StaticResource statusButtonConverter}" Mode="OneWay">
            <Binding Path="InspectorPCPing"/>
            <Binding Path="InspectorPCReadHD"/>
        </MultiBinding>
    </Ellipse.Fill>
    <Ellipse.ToolTip>
        <MultiBinding Converter="{StaticResource statusStringConverter}" Mode="OneWay">
            <Binding Path="InspectorPC"/>
            <Binding Path="InspectorPCPing"/>
            <Binding Path="InspectorPCReadHD"/>
        </MultiBinding>
    </Ellipse.ToolTip>
</Ellipse>

(显然,需要将statusButtonConverterIValueConverter更改为IMultiValueConverter,但这不是问题所在。)

EN

回答 1

Stack Overflow用户

发布于 2018-01-22 23:28:51

如果这不起作用,则表明您的statusButtonConverter实现中存在问题。

一个简单的示例显示了将MultiBinding应用于Ellipse.Fill没有问题

代码语言:javascript
复制
<Window x:Class="WpfTest.FillMultiBinding"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:l="clr-namespace:WpfTest2"
        Width="320"
        Height="160">
  <Window.Resources>
    <l:BrushPartsConverter x:Key="brushPartsConverter" />
  </Window.Resources>
  <Window.DataContext>
    <l:FillViewModel />
  </Window.DataContext>
  <Ellipse>
    <Ellipse.Fill>
      <!-- Dodger + Blue = DodgerBlue -->
      <MultiBinding Converter="{StaticResource brushPartsConverter}" Mode="OneWay">
        <Binding Path="Part1" />
        <Binding Path="Part2" />
      </MultiBinding>
    </Ellipse.Fill>
  </Ellipse>
</Window>
代码语言:javascript
复制
public class FillViewModel
{
    public string Part1 => "Dodger";
    public string Part2 => "Blue";
}

public class BrushPartsConverter : IMultiValueConverter
{
    private static readonly BrushConverter InnerConverter = new BrushConverter();

    public object Convert(object[] values, Type type, object p, CultureInfo c)
    {
        if (values?.Length == 2)
            return InnerConverter.ConvertFrom("" + values[0] + values[1]);
        return DependencyProperty.UnsetValue;
    }

    public object[] ConvertBack(object value, Type[] types, object p, CultureInfo c)
    {
        return new[] { DependencyProperty.UnsetValue };
    }
}

发布您的转换器和绑定上下文(视图模型)的代码,我们将看到我们能做些什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48384180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档