【问题标题】:Adding value to array within xaml using x:Static使用 x:Static 向 xaml 中的数组添加值
【发布时间】:2016-10-02 03:34:38
【问题描述】:

例如,我必须在 xaml 中使用字符串数组

<x:Array Type="sys:String" x:Key="Statuses">
    <sys:String>Ok</sys:String>
    <sys:String>Warning</sys:String>
    <sys:String>Error</sys:String>
</x:Array>

但是如果我必须通过x:Static 分配项目怎么办。可能吗 ?以下代码不起作用。

<x:Array Type="system:String" x:Key="Statuses">
    <sys:String>
        <Binding="{x:Static model:Status.Ok}" />
    </sys:String>
    <sys:String>
        <Binding="{x:Static model:Status.Warning}" />
    </sys:String>
</x:Array>

public enum Status
{
    Ok,
    Warning,
    Error
}

所以我的问题是如何使用x:Staticxaml 中初始化数组

我知道这种方法

[ContentProperty("Values")]
[ContentWrapper(typeof(Collection<State>))]
public class StateCollection
{
    private const string DefaultKeySeparator = ",";
    private string _keySeparator;
    public string KeySeparator
    {
        get { return _keySeparator ?? DefaultKeySeparator; }
        set { _keySeparator = value; }
    }
    private Collection<State> _values = new Collection<AlternationConverterItem>();
    public Collection<State> Values
    {
        get { return _values; }
        set { _values = value; }
    }
}

public sealed class State
{
    public Status Status { get; set; }
    public String Description { get; set; }
}

<myNamespace:StateCollection x:Key="MyCollection" KeySeparator="-">
    <myNamespace:State Status="{x:Static model:RestoreObjectStatus.Ok}" Description="{StaticResource Description1}" />
    <myNamespace:State Status="{x:Static model:RestoreObjectStatus.Warning}" Description="{StaticResource Description2}" />
    <myNamespace:State Status="{x:Static model:RestoreObjectStatus.Error}" Description="{StaticResource Description3}" />
</myNamespace:AlternationConverter2>

但是我不知道对上面写的字符串数组应用相同的方式。

【问题讨论】:

  • 看来Items 属性没有可访问的setter,所以很遗憾您不能使用像这样使用的对象数据提供程序...stackoverflow.com/questions/6145888/…
  • @M.kazemAkhgary 而 ContentProperty 和 ContentWrapper 对此无能为力?

标签: c# wpf xaml binding contentproperty


【解决方案1】:

我已经成功使用x:Static Member=:

<x:Array x:Key="SiteOkKey" Type="system:Object">
    <x:Static Member="model:RestoreObjectStatus.Ok" />
    <x:Static Member="core:RestoreObjectTypes.Site" />
</x:Array>

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 2016-06-12
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2014-07-03
    相关资源
    最近更新 更多