WPF MVVM Usercontrol с зависимыми свойствами [dубликат]

В моем приложении я использую usercontrol, называемый «ChannelControls», который я экземпляр 6 раз, на главном окнах.

public partial class ChannelControls : UserControl
{
    CMiXData cmixdata = CMiXData.Instance;
    public ChannelControls()
    {
        InitializeComponent();
        this.DataContext = this;
    }

    public static readonly DependencyProperty ChannelSpriteCountProperty =
    DependencyProperty.Register("ChannelSpriteCount", typeof(string), typeof(ChannelControls), new PropertyMetadata("1"));
    [Bindable(true)]
    public string ChannelSpriteCount
    {
        get { return (string)this.GetValue(ChannelSpriteCountProperty); }
        set { this.SetValue(ChannelSpriteCountProperty, value); }
    }

Я использую специальный класс ccmixdata для хранения всех данных для моего приложения (он будет содержать разные свойства с List строки, double и т. д.). [F8] будет содержать множество слайдеров, кнопок и других пользовательских элементов управления, но в данный момент я пытаюсь связать только один из них.

Вот одна часть этого пользовательского класса, который будет хранить данные, у него есть частный конструктор, так как мне нужно получить доступ к нему из любого места:

[Serializable]
public class CMiXData : INotifyPropertyChanged
{
    private static CMiXData _instance = null;
    public static CMiXData Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new CMiXData();
            }
            return _instance;
        }
    }
    private CMiXData() { } //prevent instantiation from outside the class


    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
        MessageBox.Show(propertyName);
    }


    private List<string> _SpriteCount = new List<string>(new string[] {"1", "1", "1", "1", "1", "1"});
    public List<string> SpriteCount
    {
        get { return _SpriteCount; }
        set
        {
            if(_SpriteCount != value)
            {
                _SpriteCount = value;
                RaisePropertyChanged("SpriteCount");
            }
        }
    }

И вот как я Я пытаюсь связать свойство channelcontrol ChannelSpriteCount с моим одноэлементным классом: cmixdata.

<CMiX:ChannelControls x:Name="Layer0" Tag="0" Visibility="Visible" ChannelSpriteCount="{Binding SpriteCount[0], Mode=TwoWay}"/>

В основном пользовательском контроле, который установлен ChannelControls, datacontext установлен следующим образом: [ ! d4]

public partial class CMiX_UI : UserControl
{
    BeatSystem beatsystem = new BeatSystem();
    CMiXData cmixdata = CMiXData.Instance;

    public CMiX_UI()
    {
        InitializeComponent();
        this.DataContext = cmixdata;
    }

И на стороне xaml:

<UserControl
        x:Class="CMiX.CMiX_UI"
        DataContext="{x:Static CMiX:CMiXData.Instance}"

Но по какой-то причине свойство cmixdata не обновляется и всегда имеет значение по умолчанию ...

-1
задан 30 September 2017 в 12:51

0 ответов

Другие вопросы по тегам:

Похожие вопросы: