WPF类型转换问题,int和string
“KarliCards_GUI.NumberOfPlayers”类型的对象不能应用到要求为“System.String”类型的属性中。 KarliCards GUI  D:\C#\Chapter14\KarliCards GUI\Options.xaml 34  

public Options()
{
if (_gameOptions == null)
{
if (File.Exists("GameOptions.xml"))
{
using (var stream = File.OpenRead("GameOptions.xml"))
{
var serializer = new XmlSerializer(typeof(GameOptions));
_gameOptions = serializer.Deserialize(stream) as GameOptions;
}
}
else
_gameOptions = new GameOptions();
}
DataContext = _gameOptions;
InitializeComponent();
}

             public class NumberOfPlayers : ObservableCollection<int>
{
    public NumberOfPlayers() : base()
    {
        Add(2);
        Add(3);
        Add(4);
    }
}

    WPF中int转换为string是标准转换啊,为何这里出错???求大神解答

3个回答

2.ToString();
3.ToString();
4.ToString();

    Add(2.ToString());     
qq_37469019
qq_37469019 不是额,我定义的集合类型T是Int类型,Add()里面的参数是T类型,也就是Int类型
大约 3 年之前 回复

你的问题应该出现在XML反序列化GameOptions的时候
GameOptions类中应该包含NumberOfPlayers。
序列化GameOptions时,NumberOfPlayers是序列化成string?这样反序列化时,就出现你那这样的问题。
有2个建议
1. 列表还是要序列化成列表, 参考XmlArray, XmlArrayItem等特性 (这是比较好的做饭)
2. 通过一个代理Property(string类型), 例如IpAddressProxy属性就是IpAddress属性的代理,虽然序列化或者反序列化XML是操作的是IPAddressProxy,但实际上是改了IpAddress的值。
** [XmlIgnore]**
public IPAddress IpAddress { get; set; }

    **[XmlAttribute(AttributeName = "IpAddress")]**
    public string IpAddressProxy
    {
        get { return IpAddress == null ? null : IpAddress.ToString(); }
        set { IpAddress = IPAddress.Parse(value); }
    }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐