如何创建由几个datatemplate组成的流畅模板

时间:2013-09-03 18:04:57

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

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

例如:

我有两个DataTemplates

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

    stackpanel << [Button] textblockwithtext >>
    
  • DataTemplate2 =&gt; StackPanel中的Textblock和Combobox。像:

    stackpanel << 11111111thisisnewtextblock >> [ComboBox]
    

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

stackpanel << DataTemplate1 DataTemplate 2 >>

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

或两行,但它会在中间打破,如:

按钮text1 \ n
text2 \ n COMBOX

我想要这样的事情: 按钮\ n text1和text2的一半\ n text2和组合框的后半部分。(根据窗口的空间量)。

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

我曾尝试使用Document in run,但几乎不可能为它们创建datatemplate。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

足够接近?

 <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表示下半部分和上半部分。