4 つのビューがあります。1 つ目はWindow
を含むです。3 つの異なるタイプがあるので、ComboBox
アイテムComboBox
のタイプごとに 3 つの異なる小さなビューを作成しました。
私の問題は、テキスト値をメインビューの祖先の現在のアイテムにバインドできないことです。list/CurrentItem にバインドしようとすると、プログラムがクラッシュします。
メイン ビューのリスト:
<GroupBox Margin="5,5,10,5" Grid.Column="1" Header="MyListOfTypes" Name="MyListOfTypes">
<ListBox ItemsSource="{Binding Path=MyListOfTypes}" SelectedItem="{Binding Path=SelectedType}" />
</GroupBox>
小さなビューの私のテキストボックス:
<UserControl x:Class="Editeur.View.BaliseFixView"
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:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d"
d:DesignHeight="28" d:DesignWidth="240">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Label Content="Fix :" />
<TextBox Width="170px" Grid.Column="1" Name="fixValue" Text="{Binding Source={StaticResource Locator}, Path=Balise.MyListOfTypes/}"/>
</Grid>
</UserControl>
ロケーター:
public class ViewModelLocator
{
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<BaliseViewModel>();
}
public BaliseViewModel Balise
{
get
{
return ServiceLocator.Current.GetInstance<BaliseViewModel>();
}
}
}
解決
プロパティを追加して修正しました:
public string Valeur
{
get
{
return _valeur;
}
set
{
Set(() => Valeur, ref _valeur, value);
}
}
そして関数
public void RemplirDicoVars(XDocument document)
{
ApercuValeurs = (
from p in document.Descendants("apercu")
select new
{
Key = (string)(p.Attribute("var")),
Value = (string)(p.Attribute("value"))
}).ToDictionary(pair => pair.Key, pair => pair.Value);
}
XAML:
<TextBox Width="170px" Grid.Column="1" Name="fixValue" Text="{Binding Path=Valeur}" />