【问题标题】:How to Create fluent template which composed of couple of datatemplate如何创建由几个数据模板组成的流利模板
【发布时间】:2013-09-04 03:37:09
【问题描述】:

我正在尝试创建一个由其他数据模板构建的流畅页面。

例如:

我有两个DataTemplates

  • DataTemplate1 => StackPanel 中的按钮和文本块。喜欢:

    stackpanel << [Button] textblockwithtext >>
    
  • DataTemplate2 => StackPanel 中的文本块和组合框。喜欢:

    stackpanel << 11111111thisisnewtextblock >> [ComboBox]
    

在我将它们合并之后,就像这是第三个模板(像这样:

stackpanel << DataTemplate1 DataTemplate 2 >>

我会得到一些不流利的东西。可能都在同一行,

或分两行,但它会在中间中断,例如:

按钮文本1 \n
文本2 \n 组合框。

我想要这样的东西: 按钮\n text1 and half of text2 \n text2后半部分和combo box。(根据窗口的空间大小)。

所以,当我使用几个数据模板时,我想找到一种有效的包装方式(包装面板不是我想要的。我正在寻找一种方法来合并几个数据模板 - 让它们与每个其他,它们不会是完全不同的部分)。

我尝试过在 Document 中运行,但几乎不可能为它们创建数据模板。

有什么想法吗?

谢谢。

【问题讨论】:

  • Any ideas? - 是的。请发布您当前的 XAML,而不是试图用文字来解释它。
  • 我不知道如何创建它。这就是重点。

标签: c# wpf wpf-controls wpf-4.0 wpf-4.5


【解决方案1】:

够近了吗?

 <DataTemplate>
      <Grid>
         <Grid.RowDefinitions>
              <RowDefinition />
              <RowDefinition />
              <RowDefinition />
         </Grid.RowDefinitions>

         <Grid.ColumnDefinitions>
              <ColumnDefinition/>
              <ColumnDefinition/>
         </Grid.ColumnDefinitions>


         <Button Grid.ColSpan="2" />
         <TextBlock  Grid.Row="1" Grid.ColSpan="2">
               <Run Text="{Binding Text1}" />
               <Run Text="{Binding Text2 , Converter={StaticResource StringToSubStringConverter,ConverterParameter=0}}" /> 
         </TextBlock>

         <Text Text="{Binding Text2 , Converter={StaticResource StringToSubStringConverter,ConverterParameter=1}}" Grid.Row="2" 

         <ComboBox Grid.Column="1" Grid.Row="2" />

      </Grid>  
 </DataTemplate>

转换器参数的1和0分别表示下半部分和上半部分。

【讨论】:

  • 谢谢,但我希望它是通用的。如果有足够的地方,不要换行。我想要一个做得很好的面板。
猜你喜欢
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2011-04-04
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多