2014-03-24 82 views
0

我正在使用ModernUI开发WPF应用程序。它包含一个名为的链接,链接可用于浏览页面。它也用于Tab控件,用于在多个选项卡上显示页面(每个选项卡用作链接)。从对象获取URI

我的要求是动态生成选项卡,但在每个选项卡中我必须显示相同的内容(相同的用户控件)。

的唯一方式设置链接内容是通过它接受URI类型的对象Source属性。如果我创建5个选项卡(5个链接)并为每个选项卡设置相同的URI,那么UserControl对象将在选项卡之间共享(如果我在1选项卡上进行更改,它会反映在所有其他选项卡上)。

我应该如何预防?有没有一种方法可以将Runtime对象用作URI?

如果可以使用一些替代方法完成任何建议,欢迎使用?

谢谢!

回答

0

如果您确实有五个不同的选项卡,则按设计,您应该使用五个不同的来源。如果您最初想要拥有相同的内容,则应该创建与五个Link对应的Uri类型对象的五个不同实例。

除此之外,你还必须确保所有的Uri都不指向相同的东西。如果他们这样做,那么改变同样的事情会反映在所有这些标签。

+0

是啊,我自己确定这个问题。 最后修改了系统选项卡控件以符合我的要求。 感谢您的帮助! –

+0

您应该发布自己的解决方案并接受答案或接受现有答案之一 - 以便其他人知道解决方案是什么! – akshay2000

+0

请给我一点时间。仍在努力。 我会尽快完成。 –

0

这是TabItem模板我修改了我的原因。希望这将是为别人以及有益....

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:mui="http://firstfloorsoftware.com/ModernUI"> 

<SolidColorBrush x:Key="TabControlNormalBorderBrush" Color="#8C8E94"/> 
<LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0"> 
    <GradientStop Color="#F3F3F3" Offset="0"/> 
    <GradientStop Color="#EBEBEB" Offset="0.5"/> 
    <GradientStop Color="#DDDDDD" Offset="0.5"/> 
    <GradientStop Color="#CDCDCD" Offset="1"/> 
</LinearGradientBrush> 
<LinearGradientBrush x:Key="TabItemHotBackground" EndPoint="0,1" StartPoint="0,0"> 
    <GradientStop Color="#EAF6FD" Offset="0.15"/> 
    <GradientStop Color="#D9F0FC" Offset=".5"/> 
    <GradientStop Color="#BEE6FD" Offset=".5"/> 
    <GradientStop Color="#A7D9F5" Offset="1"/> 
</LinearGradientBrush> 
<SolidColorBrush x:Key="TabItemSelectedBackground" Color="#F9F9F9"/> 
<SolidColorBrush x:Key="TabItemHotBorderBrush" Color="{DynamicResource AccentColor}" Opacity="0.1"/> 
<SolidColorBrush x:Key="TabItemDisabledBackground" Color="#F4F4F4"/> 
<SolidColorBrush x:Key="TabItemDisabledBorderBrush" Color="#FFC9C7BA"/> 
<Style x:Key="TabItemStyle" TargetType="{x:Type TabItem}"> 
    <Setter Property="Foreground" Value="Black"/> 
    <Setter Property="Padding" Value="6,1,6,1"/> 
    <Setter Property="BorderBrush" Value="{StaticResource TabControlNormalBorderBrush}"/> 
    <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TabItem}"> 
       <Grid SnapsToDevicePixels="true"> 
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,0" Margin="5,0,5,0" 
          Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"> 
         <Grid> 
          <Label x:Name="LblCon" Content="{TemplateBinding Header}" FontSize="18" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
            HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" 
            VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
          <Border x:Name="Overlay" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,0" Opacity="0.1" 
          Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"></Border> 
         </Grid> 
        </Border> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Background" TargetName="Overlay" Value="{DynamicResource Accent}"/> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="true"> 
         <Setter Property="Panel.ZIndex" Value="1"/> 
         <Setter Property="BorderThickness" TargetName="Bd" Value="0,0,0,3"/> 
         <Setter Property="BorderBrush" TargetName="Bd" Value="{DynamicResource Accent}"/> 
         <Setter Property="FontSize" TargetName="LblCon" Value="18"/> 
         <Setter Property="FontWeight" TargetName="LblCon" Value="Bold" /> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="false"/> 
          <Condition Property="IsMouseOver" Value="true"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="BorderBrush" TargetName="Overlay" Value="{DynamicResource Accent}"/> 
        </MultiTrigger> 
        <Trigger Property="TabStripPlacement" Value="Bottom"> 
         <Setter Property="BorderThickness" TargetName="Bd" Value="0"/> 
        </Trigger> 
        <Trigger Property="TabStripPlacement" Value="Left"> 
         <Setter Property="BorderThickness" TargetName="Bd" Value="0"/> 
        </Trigger> 
        <Trigger Property="TabStripPlacement" Value="Right"> 
         <Setter Property="BorderThickness" TargetName="Bd" Value="0"/> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="true"/> 
          <Condition Property="TabStripPlacement" Value="Top"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Margin" Value="-2,-2,-2,-1"/> 
         <Setter Property="Margin" TargetName="LblCon" Value="0,0,0,1"/> 
        </MultiTrigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="true"/> 
          <Condition Property="TabStripPlacement" Value="Bottom"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Margin" Value="-2,-1,-2,-2"/> 
         <Setter Property="Margin" TargetName="LblCon" Value="0,1,0,0"/> 
        </MultiTrigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="true"/> 
          <Condition Property="TabStripPlacement" Value="Left"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Margin" Value="-2,-2,-1,-2"/> 
         <Setter Property="Margin" TargetName="LblCon" Value="0,0,1,0"/> 
        </MultiTrigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsSelected" Value="true"/> 
          <Condition Property="TabStripPlacement" Value="Right"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Margin" Value="-1,-2,-2,-2"/> 
         <Setter Property="Margin" TargetName="LblCon" Value="1,0,0,0"/> 
        </MultiTrigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Background" TargetName="Bd" Value="{StaticResource TabItemDisabledBackground}"/> 
         <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource TabItemDisabledBorderBrush}"/> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style>