此问题已在此处有答案:
Bind to explicit interface indexer implementation(1个答案)
2天前关闭。
因为我需要在UI中显示大量的位信息,所以我试图有一个数据结构,可以根据单个位(每个int为32位)公开不同属性的数组。我想出的是一个有点笨拙,不工作的约束力。所以我想知道有没有更好的方法来实现这个目标。
我目前拥有的:我声明了几个不同的接口,每个接口都有一个[]运算符属性。
public interface IProperty1
{
string this[int index] { get; }
}
主类不仅实现了这个接口,还公开了一个基于这个接口的属性,并显式地实现了每个接口,从而实现了索引运算符。
public class BitData: IProperty1, IProperty2, IProperty3
{
public IProperty1 Property1 => this;
public IProperty2 Property2 => this;
public IProperty3 Property3 => this;
string IPropert1.this[int index]
{
get { //logic here; }
}
}
在单元测试中,如果我有一个BitData对象,我可以使用data.Property1[0](如Assert.AreEqual(xxxxx, data.Property1[i]).
)这样的语法访问各个位的各个属性
然而,当我使用对象作为数据上下文和“属性[0]”作为绑定路径时,WPF会抱怨“[] property not found on object of type BitData”。
<DataTemplate DataType="{x:Type BitData }">
<TextBlock Text="{Binding Path=Property1[0]}" Foreground="{Binding Path=Property2[0]}" Background="{Binding Path=Property3[0]}"/>
</DataTemplate>
1条答案
按热度按时间pgvzfuti1#
在我的UI中,我还有一个整数值,表示打开或关闭的继电器数量。
在绑定中,我只使用整数值与这个IConverter
Xaml中的用法如下所示