Uygulamamın bir MainWindow'u var. Bunun içinde, MainWindowViewModel'in bir özelliğine bağlanan 1 kontrol, ListBox
vardır. Bu özellikBağımlılık özelliğine bir 'sınır' değeri nasıl iletilir?
CriteriaVm Kriterleri içinde MyString
adlı tek dize özelliği aşağıdaki kodu
<UserControl x:Class="CompoundInterests.View.CriteriaView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:CompoundInterests.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="600">
<UserControl.Resources>
<ResourceDictionary Source="../Dictionary.xaml" />
</UserControl.Resources>
<Grid>
<Border>
<Expander Header="{Binding MyString}" >
<vm:PropertiesVm ThresholdName="{Binding MyString}" />
</Expander>
</Border>
</Grid>
</UserControl>
Gördüğünüz gibi var görüntüle vardır, ben bağlayıcı ediyorum tip CriteriaVm bir UserControl olduğunu MyString 2 yerde. Expander'da bağlanma gayet iyi çalışıyor, vm'deki özellikler: PropertiesVm (Bağımlılık Properitesini kullanıyor) değil. Aşağıdaki hata hata mesajı o ProperitesVm Stringim arıyor söylüyor
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=MyString; DataItem=null; target element is 'PropertiesVm' (HashCode=5991653); target property is 'ThresholdName' (type 'String')
Tamam ... Ben CriteriaVm Stringim arıyor olmalı Çıktı penceresinde gösterir. Bu, 1 seviye ve UserControl türünde olduğunu düşündüğüm RelativeSource'ı kullanmam gerektiği anlamına geliyor. Bu yüzden güncellendi: ben biraz farklı konuyu olsun ama aynı temel arıza anda
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''. BindingExpression:Path=MyString; DataItem=null; target element is 'PropertiesVm' (HashCode=24649639); target property is 'ThresholdName' (type 'String')
varsa, PropertiesVm sadece bağımlılık özelliklere sahip olarak görünür
<vm:PropertiesVm ThresholdName="{Binding Path=MyString, RelativeSource={RelativeSource AncestorLevel=1,AncestorType=UserControl,Mode=FindAncestor}}" />
, PropertiesView adildir boş bir ızgara. Bu yüzden önce bu hata üzerinde çalışabilirim ve sonradan bağlanmanın sonraki aşamasını düşünebilirim.
Neden hata mesajı alıyorum veya yanlış yaptığımı göremiyorum. Gerektiğinde daha fazla kod sağlayabilirim. Bu aşamada proje çok erken, çok az kod.
1.Add [BindableAttribute (true)] özelliğini senin örnekle kayboldum –