سؤال

وأريد أن تطبيق تنسيق (محاذاة النص، تنسيق العملة 0000.00) إلى الأعمدة في GridViewColumn.

 <GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/>

والفكرة هي واحدة التالية: في الأعمدة (GridViewColumn) النص الذي لدينا يمكن تطبيق تنسيق له (Aligners على اليسار واليمين والوسط، ويبرر، الخ.)

.

في التعليمة البرمجية التالية يمكن أن نرى محاولات مختلفة دون الحصول على أي نتيجة

والرمز هو كما يلي:

 <Window x:Class="ListViewTest.Test0.ListViewTest"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="Empty ListView Grid" Height="216" Width="435" FlowDirection="LeftToRight" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.IsSharedSizeScope="False">
    <Window.Resources>
        <XmlDataProvider x:Key="CustomersDS" Source="C:\data.xml"/>
        <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </Window.Resources>



    <ListView Margin="0,0,0,50" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Source={StaticResource CustomersDS}, XPath=/Customers/Customer}">
        <ListView.View>
            <!--ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}"-->
            <GridView >
                <GridViewColumn Width="80" TextBlock.TextAlignment="Center">
                    <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock HorizontalAlignment="Center" Text="{Binding XPath=Code}"></TextBlock>
                    </DataTemplate>
                  </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn TextBlock.TextAlignment="Center" Width="80" DisplayMemberBinding="{Binding XPath=Name}"/>
                <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=Country}"/>
                <GridViewColumn Width="120" TextBlock.TextAlignment="center" DisplayMemberBinding="{Binding XPath=money}"/>
            </GridView>
        </ListView.View>
    </ListView>


</Window>

وXML

     <Customers>
  <Customer>
 <Code>1234</Code>
 <Name>EPI</Name>
 <Country>Sesame Street</Country>
<money> 98.00</money>
  </Customer>
  <Customer>
 <Code>3234</Code>
 <Name>Paul</Name>
 <Country>United Kingdom</Country>
<money> 8.70</money>
  </Customer>
 <Customer>
 <Code>3344</Code>
 <Name>Juan</Name>
 <Country>Spain</Country>
<money> 785.5</money>
  </Customer>
 <Customer>
 <Code>4321</Code>
 <Name>Dodo</Name>
 <Country>Venezuela</Country>
<money> 150.02</money>
  </Customer>
</Customers>
هل كانت مفيدة؟

المحلول

وهنا هو كيف فعلت شيئا من هذا القبيل (تنسيق ومواءمة عمود العملة):

<GridViewColumn Header="Amount">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock TextAlignment="Right"
                       Text="{Binding Path=Amount, StringFormat='{}{0:C}'}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

وأود أيضا أن أضيف هذا النمط:

<Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>

إذا كنت لا تستخدم الصافي 3.5 SP1، ستحتاج إلى استخدام محول بدلا من StringFormat.

نصائح أخرى

لديك stringformat للعملة على سبيل المثال، يمكنك استخدام "StringFormat" الذي تم عرضه على الكائن ملزمة في SP1 .net3.5 على ما أعتقد.

Text="{Binding XPath=Code, StringFormat=0.000}"

وبالاضافة الى ذلك، لا بد لي أن أقول إنني لا أفهم تماما سؤالك سواء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top