0

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}" />
4

0 に答える 0