我在此綁定中缺少某些內容,因爲它不起作用。這是爲了學習的目的,如果你看到這可以改善,請告訴我。但除此之外,我也很想知道爲什麼這不起作用。UserControl和MainWindow問題之間的綁定
在我的MainWindow
中有一個CheckBox
,它綁定了一個命令:checkCommand
。
在RootViewModel.cs:
public Command checkCommand { get; set; }
public RootViewModel()
{
checkCommand = new Command(mark);
}
private void mark()
{
myThingsCollection[0].marked= true;
}
此命令工作正常,並且也改變了marked
到true
狀態(我有MessageShowBox
測試這一點)。
我以前增加了UC的ObsevableCollection<UC>
(myThingsCollection
),並將其綁定到ItemsControl
這種方式MainWindow.cs
<ItemsControl ItemsSource="{Binding myThingsCollection}">
<DataTemplate> <!--I've ommited some parts here--!>
<local:UC/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
的UC正確顯示。
marked
是UCViewModel
的屬性:
class UCViewModel
{
#region Implementation of INotifyPropertyChanged
private bool _marked;
public bool marked
{
get
{
return _marked;
}
set
{
_marked= value;
OnPropertyChanged("marked");
}
}
}
這UserControl
(UC
)具有CheckBox
我這樣綁定:
<CheckBox Content="Hello!" IsChecked="{Binding marked}"/>
,並設置DataContext
這種方式(代碼在UC.cs.xaml)
public UC()
{
UCViewModel context = new UCViewModel();
DataContext = context;
InitializeComponent();
}
但它不起作用。我不知道它缺少什麼。順便說一句,我很確定這不是一個好的方法來解決這個問題,有沒有更簡單的方法?由於
-.- * [...]但它不起作用。 [...] * - 非常有用,就像「我的應用程序正在崩潰」。來吧,你必須提供更多的細節。你在VS的調試輸出窗口中是否收到了任何'BindingExpression'錯誤?順便說一句,'Command'是這個自定義類嗎? – DHN
是的,命令是啓用命令的自定義類。我無法看到BindingExpression錯誤。我會再檢查一次。 – Sturm
我在設置,輸出窗口中將DataBinding Trace設置爲「全部」。但我無法找到顯示錯誤的位置。它們是否顯示在正常錯誤的相同位置?如果是這樣,沒有任何錯誤。 – Sturm