Проблема с подвижным элементом в WPF - PullRequest
0 голосов
/ 24 мая 2010

Я, вероятно, перебираю очень простую проблему, но вот что у меня есть на данный момент:

У меня есть несколько кнопок и список элементов, в которых пользователь может выбирать и взаимодействовать.Мое приложение также перемещает эти элементы в соответствии с шириной / высотой приложения, например:

listBox1.Margin = новая толщина (this.ActualWidth * 0.84, this.ActualHeight * 0.3, 0, 0);

Я могу выбрать элементы в списке и соответствующим образом нажимать на кнопки в оконном режиме, но когда я растягиваю приложение больше, я пытаюсь нажимать на элементы и не могу сделать это ..это потому, что мне также нужно обновить их прямоугольники обнаружения попаданий?Или, возможно, я неправильно перемещаю предметы?Я в растерянности ... любая информация была бы очень полезна на данный момент ... спасибо!

Ответы [ 2 ]

0 голосов
/ 25 мая 2010

Я пишу этот XAML:

<Window x:Class="StackOverflow_MovingProblem.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <ListBox Name="listbox1" ItemsSource="{Binding Path=list}" />
        <StackPanel Grid.Row="1" Orientation="Horizontal">
            <Button Content="button1" />
            <Button Content="button2" />
            <Button Content="button3" />
        </StackPanel>
    </Grid>
</Window>

с этим кодом:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = this;

            SizeChanged += new SizeChangedEventHandler(MainWindow_SizeChanged);

            list = new ObservableCollection<string>();
            list.Add("item1");
            list.Add("item2");
            list.Add("item3");
        }

        public ObservableCollection<string> list { get; set; }

        void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            listbox1.Margin = new Thickness(this.ActualWidth * 0.84,
                                            this.ActualHeight * 0.3, 0, 0);
        }
    }

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

0 голосов
/ 25 мая 2010

Не уверен, почему вы не можете больше щелкать по элементам после изменения размера.У этого может быть много причин.Очевидно, вы хотите иметь пропорциональные поля вокруг ListBox.Обычно вы делаете это с помощью Grid:

<Grid>
  <Grid.ColumnDefinitions>
     <ColumnDefinition Width="0.83*"/>
     <ColumnDefinition/>
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
     <RowDefinition Height="0.3*"/>
     <RowDefinition/>
  </Grid.RowDefinitions>
  <ListBox x:Name="listBox1" Grid.Column="1" Grid.Row="1"/>
</Grid>
...