WPF:仪表值转换器

WPF:仪表值转换器,wpf,xaml,Wpf,Xaml,因此,我有一个简单的Gauge类,该类具有静态int属性,实现了属性更改: TotalPacketsSent 这个属性一直在增加,我想编写一个简单的转换器,然后发送这个转换器这个属性并基于这个属性返回一些值: public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { int val = (int)value; double percentag

因此,我有一个简单的
Gauge
类,该类具有静态
int
属性,实现了
属性更改

TotalPacketsSent
这个
属性
一直在增加,我想编写一个简单的
转换器
,然后发送这个
转换器
这个
属性
并基于这个
属性
返回一些值:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
int val = (int)value;
    double percentage = ((double)MyClass.TotalPacketsSent / MyClass.TotalPacketsInList) * 100;
    return percentage;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
Window.Resources
下,我有:

<Convertors:GaugeValueConverter x:Key="GaugeValueConverter"/>
所以我的问题是我的
转换器根本不工作,我的意思是,我看不到它甚至执行了。
你知道为什么吗

编辑:

属性
一直在更改,我有
标签
我使用这种方式显示其值:

Content="{Binding Path=(my:MyClass.TotalPacketsSent)}"

这很好。

您将
value
参数转换为
int
,然后不使用它

我想你要找的是(源自
IMultiValueConverter
而不是
IValueConverter
):

在XAML中:

<Controllers:Gauge x:Name="gauge" Minimum="0" Maximum="100">
    <Controllers:Gauge.Value>
        <MultiBinding Converter="{StaticResource GaugeValueConverter}">
            <Binding Path="(my:MyClass.TotalPacketsSent)" />
            <Binding Path="(my:MyClass.TotalPacketsInList)" />
        </MultiBinding>
    </Controllers:Gauge.Value>
</Controllers:Gauge>


转换器是否关心它接收到的值?看起来您正在绑定到一个静态属性,我不确定它是否能正常工作。是的,请查看我的转换函数内的编辑此属性(TotalPacketsSent)一直在更改,正如我所提到的,我有一个简单的标签,实时显示这个属性值,这很好
MyClass。TotalPacketsSent在转换器中似乎没有多大意义。我的班级应该在这里干什么?转换器类的属性?你有没有把它放在任何地方?您实际需要的似乎是一个带多值转换器的MyClass.TotalPacketsSent和MyClass.TotalPacketsList的多重绑定。静态属性很简单(它甚至有类型或实现吗?)和标签很简单,这很好,但是简单属性是否会引发简单静态属性更改通知?
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
    double totalPacketsSent = (double)values[0];
    double totalPacketsInList = (double)values[1];

    // further validation for handling divide by zero, etc. may need to go here

    return totalPacketsSent / totalPacketsInList * 100
}
<Controllers:Gauge x:Name="gauge" Minimum="0" Maximum="100">
    <Controllers:Gauge.Value>
        <MultiBinding Converter="{StaticResource GaugeValueConverter}">
            <Binding Path="(my:MyClass.TotalPacketsSent)" />
            <Binding Path="(my:MyClass.TotalPacketsInList)" />
        </MultiBinding>
    </Controllers:Gauge.Value>
</Controllers:Gauge>