Ошибка привязки логического значения к IsEnabled кнопки - PullRequest
0 голосов
/ 02 октября 2018

Я нашел несколько вопросов, которые пошли в том же направлении, но я мог найти те, которые непосредственно вписывались в мою проблему.

У меня есть список в списке, содержащий двумерный массив кнопок.Теперь я хочу связать состояние «IsEnabled» со свойством класса.«Тег» уже заполняется правильными значениями объектов этого класса, но «IsEnabled» не будет работать, что бы я ни пытался.

Вот мой XAML для шаблона данных, который я использую:

    <DataTemplate x:Key="DataTemplate_Level2">
        <Button Height="35" Width="35" Margin="-1,-1,-1,-1" IsEnabled="{Binding hit}" x:Name="fieldButton" Click="fieldClick" Tag="{Binding}" Style="{StaticResource ButtonStyle1}"/>
    </DataTemplate>

    <DataTemplate x:Key="DataTemplate_Level1">
        <ItemsControl ItemsSource="{Binding}" ItemTemplate="{DynamicResource DataTemplate_Level2}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </DataTemplate>

Вот код, который заполняет списки:

fields=new List<List<Field>>();

for(int i = 0; i < SIZE; i++) {
    fields.Add(new List<Field>());
    for(int j = 0; j < SIZE; j++) {
        fields[i].Add(new Field(i, j));
    }
}

Это класс, который я хочу, чтобы свойство "hit" связывалось с "IsEnabled": private int x;private int y;

    public Boolean hit;

    public int X { get => this.x; set => this.x = value; }
    public int Y { get => this.y; set => this.y = value; }

    public Field(int x,int y) {
        this.x = x;
        this.y = y;
        this.hit = false;
    }

    public override string ToString() {
        return this.x + "," + this.y;
    }

1 Ответ

0 голосов
/ 02 октября 2018

hit - это поле в вашем коде.Вы можете привязать только к собственности.

Попробуйте изменить его на такое свойство:

public bool hit { get; set; }
...