Проблема при настройке привязок команд в XAML - PullRequest
0 голосов
/ 13 июня 2011

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

В xaml я создал массив, который я использую в качестве статического ресурса для привязки.

<coll:ArrayList x:Key="MenuOptionsList">
        <model:DashboardMenuBarItem 
               Icon="the location of an image in my images folder" 
               DisplayName="The test that will appear under my button"  
               CommandName="someCommandInMyViewModel"/>
</coll:ArrayList>

Я использую список с шаблоном данных для отображения этих элементов следующим образом.

<ListBox x:Name="lstNavigateTo" MinWidth="400" DockPanel.Dock="Top"
             ItemsSource="{Binding Source={StaticResource MenuOptionsList}}" 
             ScrollViewer.HorizontalScrollBarVisibility="Disabled"
             Style="{StaticResource horizontalListTemplate}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="5">
                    <Button Height="60" Width="60"
                            Command="{Binding Mode=OneWay, Path=CommandName}">
                        <Button.Content>
                            <Image Source="{Binding Path=Icon}" Grid.Row="0" />
                        </Button.Content>
                    </Button>
                    <TextBlock Text="{Binding Path=DisplayName}" 
                               Width="100" TextAlignment="Center" Grid.Row="1" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
</ListBox>

Моя проблема заключается в том, что я использую шаблон проектирования MVVM и не могу заставить привязки команд работать при нажатии кнопки.,Ранее я бы управлял щелчком кнопки следующим образом.

Command="{Binding someCommandInMyViewModel}"

Это бы работало нормально, но когда я пытаюсь связать команду со свойством элемента в моей коллекции, команда не сработает.

Кто-нибудь знает, как мне этого добиться.

1 Ответ

2 голосов
/ 13 июня 2011

Свойство CommandName в вашей коллекции имеет тип String, тогда как свойство Command в Button имеет тип ICommand.Каким образом вы ожидаете, что WPF разрешит ICommand из String?Вам нужно будет помочь: либо создайте конвертер и используйте его в привязке, либо измените свойство CommandName, чтобы оно содержало действительный ICommand, а не String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...