Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > При выводе UserControl в Window он выходит за пред


Автор: gulal 9.4.2012, 06:13
День добрый! 
Уже несколько дней мучаюсь с проблемкой. Не могу преодолеть (даже гугл весь перешерстил).
В общем ситуация следующая. У меня есть UserControl, на котором лежит ListView ... он заполняется динамически из базы.... в итоге когда я его вывожу на главную форму, у меня UserControl выходит за пределы главной формы (когда в таблице много значений)... хотя я рассчитываю, что появится скролбар... Подскажите, как сделать так, что бы при изменении количества данных в таблице в UserControl (а так же при изменении размеров главной формы) он правильно показывал или не показывал Scroll и не выходил за пределы главной формы...

Сокращённый Xaml Usercontrol

Код

<UserControl x:Class="qqq"
             ...........
             d:DesignHeight="300" 
             d:DesignWidth="300"
             HorizontalAlignment="Stretch"
             VerticalAlignment="Stretch"
             >
    <Grid x:Name="grd">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
<ToolBarPanel x:Name="_tbp"
                      Grid.Row="0"
                      ...........
</ToolBarPanel>
        <ScrollViewer Grid.Row="1" 
                      HorizontalScrollBarVisibility="Auto" 
                      VerticalScrollBarVisibility="Auto"
                      >
                  <ListView x:Name="_lv"
                     Margin="5"
                     ItemsSource="{Binding}">
                     ...........
                  </ListView>
        </ScrollViewer>
    </Grid>
</UserControl>


Xaml Window

Код

<ribbon:RibbonWindow x:Class="MainQQQ"
                ......
        Width="640" Height="480">
    
    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
 <ribbon:Ribbon x:Name="_mainRibbon" 
                       Grid.Row="0">
                       ...........
 </ribbon:Ribbon>
 <StackPanel x:Name="_stackUserControl"  
                    Margin="5,5,5,5"
                    Grid.Row="1"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Stretch"
                    >
        </StackPanel>
    </Grid>
</ribbon:RibbonWindow>


CS Window
Код

{
        ..........................
        private void _ribbonButtonClick(object sender, RoutedEventArgs e)
        {
            _ribbonWindow.Title = ((RibbonButton)sender).Label;
            _stackUserControl.Children.Clear();
            switch (((RibbonButton)sender).Name)
            {
                    ............
                    case "_rbType_status":
                    {
                        if (_qqq == null)
                            _qqq = new qqq();
                        _stackUserControl.Children.Add(_qqq); // Добавляю UserControl на главную форму
                    } break;
             }
        }
}



Автор: gulal 10.4.2012, 18:06
Может всё таки кто-нибудь подскажешь, что я делаю не так?

Автор: gulal 24.4.2012, 14:55
Сделал сам!
Надо использовать ContentControl вместо StackControl, а в коде писать: 
_stackUserControl.Content = qqq;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)