Проблема со статической привязкой данных в wpf - PullRequest
0 голосов
/ 18 мая 2010

Я относительно новичок в wpf и пока не совсем понимаю привязку.

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

Вот код:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<ItemsControl x:Key="Validations">
    <ItemsControl.Items>
        <ComboBoxItem>String</ComboBoxItem>
        <ComboBoxItem>Numeric</ComboBoxItem>
    </ItemsControl.Items>
</ItemsControl>

и вот поле со списком:

<ComboBox ItemsSource="{Binding Source={StaticResource Validations}}"/>

Я знаю, что решение для этого, вероятно, простое, но я еще не понял его. Я буду продолжать пытаться;)

Спасибо

1 Ответ

2 голосов
/ 19 мая 2010

Сделайте ресурс списком строк, а не визуальным элементом, затем используйте расширение StaticResource, чтобы назначить его свойству ItemsSource, например:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <x:ArrayExtension x:Key="Data" Type="{x:Type sys:String}">
            <sys:String>String1</sys:String>
            <sys:String>String2</sys:String>
            <sys:String>String3</sys:String>
        </x:ArrayExtension>
    </Window.Resources>
    <Grid>
        <StackPanel>
            <ComboBox ItemsSource="{StaticResource Data}"/>
            <ComboBox ItemsSource="{StaticResource Data}"/>
            <ComboBox ItemsSource="{StaticResource Data}"/>
        </StackPanel>
    </Grid>
</Window>

Обратите внимание на определение пространства имен xmlns:sys (отображается на пространство имен System в сборке mscorlib) и использование элемента x:ArrayExtension для объявления простого массива в XAML.

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