WPF: XamlParserException для очень простой формы? - PullRequest
0 голосов
/ 23 мая 2009

Я не верю в это: просто построил очень простую форму с одним списком, когда пользователь выбирает один элемент, метка будет отображать выбор. Вот мой код:

<Window x:Class="WpfApplication8.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ComboBox Height="23" Margin="139,0,19,14" Name="comboBox1" Text="Worker"
                  VerticalAlignment="Bottom" IsReadOnly="True" SelectionChanged="comboBox1_SelectionChanged">
            <ComboBoxItem Name="None" Selector.IsSelected="True">Select Target</ComboBoxItem>
            <ComboBoxItem Name="Alice">Alice</ComboBoxItem>
            <ComboBoxItem Name="Bob">Bob</ComboBoxItem>
            <ComboBoxItem Name="Chris">Chris</ComboBoxItem>
            <ComboBoxItem Name="Dan">Dan</ComboBoxItem>
        </ComboBox>
        <Label Height="28" Margin="15,0,0,14" Name="label1" 
               VerticalAlignment="Bottom" Content="Assign to: " HorizontalAlignment="Left" Width="120"></Label>
    </Grid>
</Window>

Код:

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    label1.Content = comboBox1.SelectedValue;
}

Ответы [ 3 ]

1 голос
/ 23 мая 2009

Вот упрощенная версия все в xaml:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel>  
          <ComboBox Name="comboBox1" Text="Worker" IsSynchronizedWithCurrentItem="True"
                  VerticalAlignment="Bottom" IsReadOnly="True" >
            <ComboBoxItem Name="None" Selector.IsSelected="True">Select Target</ComboBoxItem>
            <ComboBoxItem Name="Alice">Alice</ComboBoxItem>
            <ComboBoxItem Name="Bob">Bob</ComboBoxItem>
            <ComboBoxItem Name="Chris">Chris</ComboBoxItem>
            <ComboBoxItem Name="Dan">Dan</ComboBoxItem>
        </ComboBox>
        <Label Name="label1" DataContext="{Binding ElementName=comboBox1, Path=SelectedItem}"
               VerticalAlignment="Bottom" Content="{Binding Name}" HorizontalAlignment="Left"></Label>

  </StackPanel>
</Page>
0 голосов
/ 23 мая 2009

Другой способ также, если вы не хотите проверять, является ли метка нулевой, - это добавить обработчик изменения выбора после загрузки окна, так как он будет срабатывать до загрузки метки:

Код сзади:

    public Window1()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(Window1_Loaded);
    }

    void Window1_Loaded(object sender, RoutedEventArgs e)
    {
        comboBox1.SelectionChanged+=new SelectionChangedEventHandler(comboBox1_SelectionChanged);
    }

    protected void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        label1.Content = ((ComboBoxItem)comboBox1.Items[comboBox1.SelectedIndex]).Content;
    }

Markup:

<Grid>
    <ComboBox Height="23" Margin="139,0,19,14" Name="comboBox1" Text="Worker"
              VerticalAlignment="Bottom" IsReadOnly="True">
        <ComboBoxItem Name="None" Selector.IsSelected="True">Select Target</ComboBoxItem>
        <ComboBoxItem Name="Alice">Alice</ComboBoxItem>
        <ComboBoxItem Name="Bob">Bob</ComboBoxItem>
        <ComboBoxItem Name="Chris">Chris</ComboBoxItem>
        <ComboBoxItem Name="Dan">Dan</ComboBoxItem>
    </ComboBox>
    <Label Height="28" Margin="15,0,0,14" Name="label1" 
           VerticalAlignment="Bottom" Content="Assign to: " HorizontalAlignment="Left" Width="120"></Label>
</Grid>

Andrew

0 голосов
/ 23 мая 2009

работают следующие работы:

    protected void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (label1 != null)
            label1.Content = ((ComboBoxItem)comboBox1.Items[comboBox1.SelectedIndex]).Content;
    }

Andrew

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