Kodumun, aynı sorunu yaşayan basitleştirilmiş bir sürümünü oluşturdum. Sorun şu ki, özel kontrolümdeki bağımlılık özelliği neden modelde değiştiğinde güncellenmiyor.Özel Denetime Bağımlılık Özellik Bağlama ve Güncelleştirme
Modeli:
public class MainWindowModel : INotifyPropertyChanged
{
private bool isChecked;
public bool IsChecked { get { return isChecked; } set { isChecked = value; OnPropertyChanged("IsChecked"); } }
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string prop)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:custom="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<custom:CustomTextbox x:Name="TextboxName" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" TextChanged="CustomTextbox_TextChanged">
<custom:CustomTextbox.CustomTextboxItems>
<custom:CustomTextboxItem IsChecked="{Binding IsChecked}" />
</custom:CustomTextbox.CustomTextboxItems>
</custom:CustomTextbox>
<Button Content="Do It" Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20" />
</Grid>
</Window>
Kod Arkası:
public partial class MainWindow : Window
{
MainWindowModel model;
public MainWindow()
{
InitializeComponent();
model = new MainWindowModel();
this.DataContext = model;
}
private void CustomTextbox_TextChanged(object sender, TextChangedEventArgs e)
{
model.IsChecked = true;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (TextboxName.CustomTextboxItems[0].IsChecked)
{
TextboxName.Text = "Property successfully changed";
}
}
}
Özel Kontrol:
public class CustomTextbox : TextBox
{
public CustomTextbox()
{
CustomTextboxItems = new ObservableCollection<CustomTextboxItem>();
}
public ObservableCollection<CustomTextboxItem> CustomTextboxItems { get; set; }
}
public class CustomTextboxItem : FrameworkElement
{
public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(CustomTextboxItem), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public bool IsChecked
{
get { return (bool)GetValue(IsCheckedProperty); }
set { SetValue(IsCheckedProperty, value); }
}
}
Özel denetimde görebileceğiniz gibi, bağlamak istediğim bağımlılık özelliklerine sahip nesneler içeren öğelerden oluşan bir koleksiyona sahibim. Bu yüzden, xaml'deki nesneleri yaratıyorum ve bağlamayı kuruyorum, ancak modeldeki bağlanmış özelliği güncelleştirdiğimde, özel denetimde onu değiştirmiyor. Herhangi bir fikir?
Çok teşekkür ederim! – gamzu07
Bu bağlantı öldü, lütfen güncelleyin @kentboogaart –