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


Автор: Vadimka1234 21.7.2014, 14:20
Всем привет, нужна ваша помощь может кто сталкивался. 

Есть обычное окно WPF, в нем TabControl. Есть также еще  окно, которое я добавляю  как TabItem к первому окну в TabControl. Первое окно открывается если в него не добавлять второго, и второе тоже отображается. Но стоит мне добавить его к первому как студия зависает и больше не отвисает. Проверял на других компах, там такой ошибки не возникает. У меня vs2010 professional SP1, Windows7 x32

Вот код первого окна

Код

<mvvm:RContentControl x:Class="BanlProductTest.MainWindow"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:mvvm="clr-namespace:UBP.View.Core;assembly=UBP.Controls"               
                    mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                    xmlns:xamlControls="clr-namespace:UBP.Controls.Xaml;assembly=UBP.XamlControls"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:prcore="clr-namespace:UBP.PresentationCore.Converters;assembly=UBP.PresentationCore"  
                    xmlns:controls="clr-namespace:UBP.Controls;assembly=UBP.Controls"    
                    xmlns:elem="clr-namespace:UBP.BankProduct.Product;assembly=UBP.BankProduct"
                      
                    xmlns:banlProductTest="clr-namespace:BanlProductTest" d:DesignWidth="410">


    <mvvm:RContentControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ProductResources.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </mvvm:RContentControl.Resources>

    <Grid x:Name="grdParent">

        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto"/>
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition />
            </Grid.RowDefinitions>
            <TextBlock Text="Наименование" VerticalAlignment="Center" Margin="5" />

            <TextBox Margin="5" 
                     Grid.Column="1" 
                     x:Name="ProductName" 
                     Text="{Binding Path=Product.Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                     mvvm:CommandManager.Command="{Binding Path=NameBaseProductChanged}"
                     mvvm:CommandManager.CommandEventName="LostFocus"/>

            <TextBlock Grid.Row="1"
                       Margin="5,0,0,0"
                       Foreground="Red"
                       Grid.ColumnSpan="2" Text="{Binding Path=LabelDevProductComment}"/>
        </Grid>

        <TabControl Grid.Row="1" x:Name="BaseTabControl">


            <!--отчеты-->
            <TabItem Header="Отчёты" x:Name="Reports2" IsSelected="{Binding Path=IsSelectedReportTab}">
                <banlProductTest:Reports></banlProductTest:Reports>
            </TabItem>



        </TabControl>



    </Grid>


</mvvm:RContentControl>



а вот второго

Код

<mvvm:RContentControl x:Class="BanlProductTest.Reports"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:mvvm="clr-namespace:UBP.View.Core;assembly=UBP.Controls"               
                    mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:local="clr-namespace:BanlProductTest"
                    xmlns:prcore="clr-   namespace:UBP.PresentationCore.Converters;assembly=UBP.PresentationCore"  
                    xmlns:controls="clr-namespace:UBP.Controls;assembly=UBP.Controls"    
                    xmlns:elem="clr-namespace:UBP.BankProduct.Product;assembly=UBP.BankProduct"
                    xmlns:xamlControls="clr-namespace:UBP.Controls.Xaml;assembly=UBP.XamlControls"
                    MinHeight="480" MinWidth="740" Height="480" Width="740">

    
</mvvm:RContentControl>


Во втором xaml я все удалили оставил только нэймспэйсы, но глюк не исчез.



Автор: Ilya81 21.7.2014, 14:49
В окне Output что-то пишет перед зависанием? И что такое RContentControl?

Автор: Vadimka1234 21.7.2014, 15:05
Нет ничего не пишется, вся студия зависает. RContentControl специальный класс наследуемый от Window.

Автор: Ilya81 21.7.2014, 15:10
Ну помещать окно внутрь TabItem я б в любом случае не рекомендовал б. TabItem рассчитан на продолжение VisualTree в том же самом окне. Так что туда лучше помещать любой другой UIElement, не описывающий отдельное окно.

Автор: Vadimka1234 21.7.2014, 15:17
Может быть, но дело тут не в этом. Реально у меня большое количество окон из которых некоторые отображаются, а некоторые виснут. Пробовал искать чем они отличаются, но так и не нашел. Брал два окна - одно грузится, другое нет и делал их одинаковыми с очки зрения XAML, но не помогло.

Автор: Vadimka1234 22.7.2014, 11:31
Решил попробовать использовать ваш совет и стал использовать UserControl вместо окон, но к сожалению ошибка осталась.

Автор: Ilya81 22.7.2014, 11:49
А как назначается DataContext, к которому стоят binding'и? Может, в нём причина зависания.

Автор: Vadimka1234 22.7.2014, 13:12
Пока никакого DataContext нету, но и вместе с ним та же беда. 

Автор: Ilya81 22.7.2014, 13:33
Ну тут остаётся пробовать последовательно исключать те или иные фрагменты (например, заголовочную часть, объединение а таблицу), и смотреть, сработает ли. Кстати, Blend'ом не пробовали открывать? В нём как, какую-то ошибку выдаёт?

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