Im cố gắng liên kết 2 điều khiển WPF khác nhau với cùng một thuộc tính trong ViewModel, một CheckBox.IsChecked và Expander.IsExpanded. Các hành vi tôi muốn đạt được là có CheckBox ảnh hưởng đến ViewModel (và do đó Expander là tốt), nhưng không phải là cách khác bị ràng buộc. Cái gì như:WPF One Way Binding bị hỏng
Checkbox Checked -> ViewModel property set to frue -> Expander.Expand
Checkbox Unchecked -> ViewModel property set to false -> Expander.Collapse
Expander Expanded -> Nothing else affected
Expander Collapsed -> Nothing else affected
Đây là XAML:
<Window x:Class="WpfApplication9.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Expander IsExpanded="{Binding IsChecked, Mode=OneWay}">
<Expander.Header>
<CheckBox IsChecked="{Binding IsChecked}" Content="Is Checked"/>
</Expander.Header>
<TextBlock Text="Expanded!"/>
</Expander>
</Window>
và Bộ luật:
using System.ComponentModel;
using System.Windows;
namespace WpfApplication9
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
public class ViewModel: INotifyPropertyChanged
{
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
NotifyPropertyChange("IsChecked");
}
}
protected void NotifyPropertyChange(string PropertyName)
{
PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
}
}
Bây giờ vấn đề của tôi là, ngay sau khi tôi bấm vào Expander để mở rộng/thu hẹp nó, ràng buộc dường như ngừng hoạt động. Bất cứ ai có thể giải thích cho tôi tại sao điều này xảy ra và làm cách nào để tôi đạt được điều này? Cảm ơn trước!
Im tạo chế độ xem với ít nhất 6 Trình tăng thể có Hộp kiểm trên tiêu đề của chúng. Mã quá nhiều của nó và tôi không muốn sử dụng bất kỳ mã nào vì nó làm giảm tính linh hoạt của chế độ xem. –
@HighCore Nếu bạn có nhiều Vùng mở rộng/Hộp kiểm, bạn có thể có kiểu mặc định cho chúng và có thể đặt sự kiện Nhấp làm EventSetter theo kiểu. Tôi sẽ sử dụng một cái gì đó để điều hướng cây thị giác để tìm Expander liên kết với CheckBox đó và bạn sẽ không cần phải sử dụng các giá trị được đặt tên ở tất cả. – Rachel
@HighCore Xem câu trả lời cập nhật của tôi. Nó hoạt động mà không có bất kỳ mã-đằng sau – Rachel