Свойство зависимости элемента пользовательского интерфейса связывания с элементом данных класса - PullRequest
0 голосов
/ 12 декабря 2011

Мне нужно связать все флажки (свойство IsChecked) в StackPannel со значением bool, определенным в классе.Прикрепляя мой Xaml к моему вопросу, пожалуйста, помогите

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Height="287" HorizontalAlignment="Left" Margin="78,65,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="309" DataContext="checkFlag">
            <CheckBox Content="" Height="71" Name="checkBox1" IsChecked="{Binding Path=Binding.MainPage,Source=checkFlag,Mode=TwoWay}"/>
            <CheckBox Content="" Height="71" Name="checkBox2" IsChecked="{Binding Path=Binding.MainPage,Source=checkFlag,Mode=TwoWay}"/>
        </StackPanel>
        <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="78,400,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" />
        <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="227,400,0,0" Name="button2" VerticalAlignment="Top" Width="160" Click="button2_Click" />

Флажки не получают проверку / снятие флажка при установке / сбросе checkFlag.Должен ли я реализовать "INotifyPropertyChanged" для флага или что-то еще.Также добавьте класс, пожалуйста, посмотрите. '

namespace Binding
{
    public partial class MainPage : PhoneApplicationPage
    {
        public bool checkFlag;
        // Constructor
        public MainPage()
        {

            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            checkFlag = true;
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            checkFlag = false;
        }
    }

1 Ответ

0 голосов
/ 12 декабря 2011

мне кажется, что вам нужно реализовать, как вы уже догадались, INotifyPropertyChanged здесь есть ссылка на документации MSDN

здесь есть некоторый демонстрационный код ....

public class MyData : INotifyPropertyChanged
{

   public event PropertyChangedEventHandler PropertyChanged;

   protected void RaisePropertyChanged(string property)
   {
      PropertyChangedEventArgs args = new PropertyChangedEventArgs(property);
      var handler = this.PropertyChanged;
      if (handler != null)
      {
      handler(this, args);
      }
   }

   int _someInt = 0;
   public int SomeInt
   {
      get { return _someInt ;}
      set { if ( value == _someInt  ) return;
            _someInt = value;
            RaisePropertyChanged("SomeInt");
          }
   }

   string _someString = string.Empty;
   public string SomeString 
   {
      get { return _someString ;}
      set { if ( value == _someString ) return;
            _someString = value;
            RaisePropertyChanged("SomeString ");
          }
   }

}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...