не могу переместить панель переноса и список в главное окно

введите здесь описание изображения

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

   <Window x:Class="MyHeroEditor.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyHeroEditor"
    Title="MainWindow" Height="635.075" Width="796.643"
 WindowState="Maximized"
    Background="Bisque">
<Window.Resources>
    <Style TargetType="ListBox"  x:Key="listbox"  >
        <Setter Property="Height" Value="250"/>
        <Setter Property="Width" Value="250" />
    </Style>
    <Style TargetType="Button"  x:Key="Button"  >
        <Setter Property="Height" Value="40"/>
        <Setter Property="Width" Value="55" />
    </Style>
    <Style TargetType="WrapPanel"  x:Key="Panel"  >
        <Setter Property="Height" Value="250"/>
        <Setter Property="Width" Value="250" />
    </Style>
    <Style TargetType="Image"  x:Key="Image"  >
        <Setter Property="Height" Value="70"/>
        <Setter Property="Width" Value="70" />
    </Style>
</Window.Resources>
<Window.DataContext>
    <local:Collections/>
</Window.DataContext>

    <Canvas Name="Hero" Drop="HeroDrop" AllowDrop="True" Margin="0,0,-8,-4" 
       >
      <WrapPanel  
         x:Name="HelmetPanel" Style="{StaticResource Panel}" Height="Auto"  Width="Auto" />
     <Button
           Click="Export" Style="{StaticResource Button}" Canvas.Left="264"
        Canvas.Top="389" >Export
    </Button>
<Button
           Click="Open" Content="Open" Style="{StaticResource Button}" Canvas.Left="15" Canvas.Top="389" />
    <Button
           Click="Save" Style="{StaticResource Button}" Canvas.Left="179" Canvas.Top="389"  >Save
        </Button>
        <Button 
             AllowDrop="True" Style="{StaticResource Button}" Click="Helmet_Button_Click" Canvas.Left="415" Canvas.Top="26" >Шлемы
        </Button>
        <Button 
            AllowDrop="True" Style="{StaticResource Button}" Click="Armature_Button_Click" Canvas.Left="524" Canvas.Top="26" >Броня
        </Button>
        <Button 
             AllowDrop="True" Style="{StaticResource Button}" Click="Weapon_Button_Click" Canvas.Left="615" Canvas.Top="26" >Оружие
    </Button>
    <Button
        Click="Create" Content="Create" Style="{StaticResource Button}" Canvas.Left="90" Canvas.Top="389" />
    <Button 
         AllowDrop="True" Style="{StaticResource Button}" Click="Gloves_Button_Click" Canvas.Left="727" Canvas.Top="26" Content="Перчатки" Width="59" />
    <Button 
         AllowDrop="True" Style="{StaticResource Button}" Click="Boots_Button_Click" Canvas.Left="824" Canvas.Top="26" Content="Сапоги" />
   <Popup
            Name="HelmetsPopUp" StaysOpen="False" Placement="Mouse">
        <ListBox x:Name="listhelmets"  Style="{StaticResource listbox}"  ItemsSource="{Binding ListHelmets}"
        IsSynchronizedWithCurrentItem="True" PreviewMouseDown="helmet_MouseDown"  MouseDown="helmet_MouseDown" 
        DragLeave="helmet_DragLeave" MouseUp="Listhelmets_OnMouseUp"
        SelectedValuePath="protection" >
            <ListBox.ItemTemplate >
                <DataTemplate >
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                        <TextBox Height="30" Width="30" Text="{Binding protection}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Popup>
    <Popup
            Name="ArmaturePopUp" StaysOpen="False" Placement="Mouse" >
        <ListBox x:Name="listarmature" Style="{StaticResource listbox}" ItemsSource="{Binding ListArmature}"
        IsSynchronizedWithCurrentItem="True" MouseDown="armature_MouseDown" MouseUp="Listarmature_OnMouseUp"
    PreviewMouseMove="armature_PreviewMouseMove" SelectedValuePath="protection" DragLeave="armature_DragLeave"
     Canvas.Left="271" Canvas.Top="51">
            <ListBox.ItemTemplate >
                <DataTemplate >
                    <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                        <TextBox Height="30" Width="30" Text="{Binding protection}"/>
                        </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
            </ListBox>
      </Popup>
    <Popup
            Name="WeaponPopUp" StaysOpen="False" Placement="Mouse"  >
        <WrapPanel
      Name="WeaponPanel"  Style="{StaticResource Panel}">
            <ListBox x:Name="listweapons" Style="{StaticResource listbox}" ItemsSource="{Binding ListWeapon}"
                IsSynchronizedWithCurrentItem="True" MouseDown="weapon_MouseDown" MouseUp="Listweapons_OnMouseUp"
                DragLeave="weapons_DragLeave" 
                    PreviewMouseMove="weapons_PreviewMouseMove" SelectedValuePath="attack">
                <ListBox.ItemTemplate >
                    <DataTemplate >
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                            <TextBox Height="30" Width="30" Text="{Binding _attack}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </WrapPanel>
    </Popup>
    <TextBox x:Name="TextBox2"  Canvas.Left="29" Canvas.Top="312" Height="55" Width="130"  />
    <Button
        Click="Reset" Style="{StaticResource Button}" Content="reset" Canvas.Left="219" Canvas.Top="327"  />
    <WrapPanel Height="261" Width="264" Canvas.Left="29" Canvas.Top="15">
        <ListBox x:Name="listHero" Height="237" Width="100" Style="{StaticResource listbox}" ItemsSource="{Binding ListHero}"
             AllowDrop="True" >
            <ListBox.ItemTemplate >
                <DataTemplate >
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </WrapPanel>
  <Popup Name="GlovesPopUp" StaysOpen="False">
    <Canvas>
    <ListBox x:Name="listgloves" Height="237" Width="131" Style="{StaticResource listbox}" ItemsSource="{Binding ListGloves}"
    AllowDrop="True" Canvas.Left="723" Canvas.Top="-519" >
        <ListBox.ItemTemplate >
            <DataTemplate >
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                    <TextBox Height="30" Width="30" Text="{Binding protection}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Canvas>
    </Popup>
    <Popup Name="BootsPopUp" StaysOpen="False">
    <ListBox x:Name="listboots" Height="237" Width="137" Style="{StaticResource listbox}" ItemsSource="{Binding ListBoots}"
             AllowDrop="True" Canvas.Left="634" Canvas.Top="104" >
        <ListBox.ItemTemplate >
            <DataTemplate >
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding Image}" Style="{StaticResource Image}"/>
                    <TextBox Height="30" Width="30" Text="{Binding _attack}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
        </ListBox>
    </Popup>
</Canvas>
</Window>

person David Shepard    schedule 29.12.2015    source источник


Ответы (2)


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

Вы должны перемещать элементы управления между этими элементами:

<Window x:Class="WPFSO.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>**Add your controls here**</Grid>
    </Grid>
</Window>

Я предполагаю, что у вас есть что-то за пределами второй (внутренней) сетки или аналогичная проблема.

person Starceaker    schedule 29.12.2015
comment
Не могли бы вы добавить весь XAML этого окна в свой исходный пост? - person Starceaker; 29.12.2015
comment
У меня проблемы с редактированием. первые три списка работают правильно. Обновлен @Starceaker - person David Shepard; 29.12.2015
comment
Я посмотрю позже. Больше не на моем ПК. - person Starceaker; 29.12.2015
comment
Я только что прочитал ваше редактирование и понял, что это только всплывающее окно, с которым вы боролись. То, что я сказал, является более общим. Ответ от RAM выглядит как тот, который вам нужен. - person Starceaker; 30.12.2015

Вы можете поиграть со следующими свойствами элемента управления Popup [или Tooltip], чтобы указать его позицию при открытии:

  • PlacementTarget (для изменения целевого места размещения всплывающего окна):

Образец:

<Canvas Margin="5" Background="Red" Width="200" Height="150" >

  <Ellipse Name="ellipse1"
           Canvas.Top="60" Canvas.Left="50"
           Height="85" Width="60" 
           Fill="Black"/>

  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=ellipse1}">
    <TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
  </Popup>
</Canvas>
  • Размещение (его тип значения — PlacementMode. Значение перечисления PlacementMode, которое определяет ориентацию элемента управления Popup при открытии элемента управления и указывает, как элемент управления взаимодействует с границами экрана. По умолчанию — Bottom.)

Образец:

<Canvas Width="200" Height="150">
  <Image Name="image1"
         Canvas.Left="75" 
         Source="Water_lilies.jpg" Height="200" Width="200"/>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Bottom">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Bottom</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Top">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Top</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Left">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Left</TextBlock>

  </Popup>
  <Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
         Placement="Right">
    <TextBlock FontSize="14" Background="LightGreen">Placement=Right</TextBlock>

  </Popup>
</Canvas>

введите здесь описание изображения

Дополнительные образцы и информация:

До: введите здесь описание изображения

После: введите здесь описание изображения

person RAM    schedule 30.12.2015