MVVM WPF: отражающий свойство элементов управления в ViewModel, когда события запущены

StackOverflow https://stackoverflow.com/questions/3708000

Вопрос

Хорошо, я пытаюсь понять WPF и популярный шаблон MVVM.

Теперь у меня есть этот вопрос. Я использую управление лентой с несколькими вкладками. В моем ViewModel у меня есть свойство «ActiveTab (String)», которое должно отражать текущую активную вкладку.

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

Так что я думал:

Я мог бы связать выбранное событие, как это:

        <r:RibbonTab Label="tab1" Selected="RibbonTab_Selected"></r:RibbonTab>
        <r:RibbonTab Label="tab2" Selected="RibbonTab_Selected"></r:RibbonTab>
        <r:RibbonTab Label="tab3" Selected="RibbonTab_Selected"></r:RibbonTab>
        <r:RibbonTab Label="tab4" Selected="RibbonTab_Selected"></r:RibbonTab>
        <r:RibbonTab Label="tab5" Selected="RibbonTab_Selected"></r:RibbonTab>

Затем в Codebehind установите недвижимость в ViewModel с помощью ActiveTab = Sender.label

Но потом мне понадобится ресторанство моего просмотра модера в кодоне моего взгляда.

Я пытаюсь решить эту проблему без использования какого-либо кода за файлами. (MVVVM).

Теперь реальный вопрос:Это как-то возможно использовать экстремальный процесс или события. что, когда выбранное событие уволено. Сеттер автоматически устанавливает свойство ActiveTab в значение Sender.label?

Используя только XAML.

- Мои оправдания для моего довольно плохого английского и, возможно, неподвижной вопрос. Я очень новый в WPF =)


ОБНОВИТЬ:Как я только что узнал, существует недвижимость на ленту.

Теперь у меня есть некоторые вопросы о том, как связать его с собственностью на моем просмотру.

Я попробовал следующий код:

<Style TargetType="{x:Type r:RibbonTab}">
                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="{Binding SelectedTab}" Value="{Binding RelativeSource=Self, Path=Label}" />
                    </Trigger>
                </Style.Triggers>
            </Style>

Но это не работает:

Error   1   Cannot find the Style Property 'SelectedTab' on the type 'Microsoft.Windows.Controls.Ribbon.RibbonTab'. 

Выбранный outdab ondcourse находится в моем просмотру и не в Ribbontab ...

Как я могу сделать сеттер, установить свойство на моем просмотру модела со значением вкладки? знак равно

Заранее спасибо!!

Это было полезно?

Решение

Августовский выпуск ленты Microsoft, Ribbontab имеет свойство Isselected зависимости, поэтому вы должны иметь возможность привязать к этому.

Другие советы

Я удивлен, что RibbonControl не подвергается этому как связующее свойство, но я не на самом деле не использовал, поэтому я предполагаю, что вы правы ...

Вы можете делать привязки только к имуществу или из свойства зависимости, и если лента не имеет активного свойства зависимости вкладок, то вам нужно сделать один самостоятельно. Вы можете сделать это, подклассьте управление лентой в один из ваших собственных, добавляя его свойство и используя выбранные обработчики событий, чтобы обновить его значение. С другой стороны, если вы используете это только на одном представлении, вы можете добавить свойство на представление вместо подклассов ленты и связываться с этим.

В любом случае, в любом случае, необходимо получить вкладку «Выбранные в данный момент» в привязный двигатель, чтобы иметь возможность связывать что-нибудь для него (либо метку, либо ViewModel), и она может переходить только в двигатель через свойства зависимости. Таким образом, вы не сможете это сделать полностью в XAML, но вы сможете сделать это без введения муфты между видом и ViewModel.


Глядя на документацию для контроля ленты Microsoft для WPF, вы пробовали ленту. Селектируйте свойство? Это похоже на то, что он должен дать вам текущую выбранную вкладку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top