2016-12-19 1 views
2

У меня есть ограниченные базы данных с datagridview, и я пытаюсь обрезать ограниченную строку с помощью stringFormat, но я не узнал, как это сделать. (я не буду сделать свойство в C# файл и обрезать его)Как обрезать данные привязки с использованием строкового формата

<DataGridTextColumn Binding="{Binding type}" Width="100" HeaderStyle="{StaticResource HeaderStyle}" ElementStyle="{StaticResource dataGridElementStyle}" /> 

ответ

0

У вас есть несколько способов сделать это. Вы можете создать пользовательский номер CellStyle, вы можете установить Style Template в DataGrid.Resources, чтобы получить TargetType из TextBlock через весь DataGrid (это то, что DataGridTextColumn отображает как во время выполнения). Вообще, хотя я делаю что-то подобное, если вы только хотите, чтобы это на отдельном экземпляре, что я предполагаю, что вы пытаетесь сделать.

<DataGridTextColumn Binding="{Binding type}" Width="100"> 
    <DataGridTextColumn.ElementStyle> 
     <!-- Since it's already set as "NoWrap" by default, 
      just need to set trimming which will be invoked 
      by your set width you already have. --> 
     <Style TargetType="{x:Type TextBlock}"> 
     <Setter Property="TextTrimming" Value="CharacterEllipsis"/> 
     </Style> 
    </DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 

или вот так;

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock TextTrimming="Character Ellipses" 
         Text="{Binding type}"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

..или другие способы. Просто так или иначе удастся достичь конечного результата TextBlock.

Также, поскольку у вас уже есть ElementStyle, назначенный как ресурс, вы можете добавить к нему пример, хотя я лишил его этого примера, чтобы он был встроен. Мне нужно будет увидеть ваш ресурс для меня, чтобы показать вам его.

Надеюсь, что это поможет, счастливые праздники.

0

XAML является разметки языка. У него действительно нет возможности обрезать струны. Применение StringFormat - это не то же самое, что вызывать вызов некоторого метода (например, Trim()) для управления строкой, и вы не можете вызывать методы в XAML.

Вы должны либо использовать преобразователь значений для обрезки значения, как предложено здесь:

Clear whitespace from end of string in WPF/XAML

Или вы должны вернуть уже обрезанную строку из вашего свойства источника.

Edit: Если вы ссылаетесь на подрезку в контексте возможности рисовать многоточие вместо оставшегося текста, когда длина текста перетекает доступная область содержимого можно установить TextTrimming свойство ElementStyle, как предложенный Крисом У.

+0

[TextTrimming] (https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming (v = vs.110) .aspx) является свойством для множества элементов , –

0

У вас есть несколько вариантов для достижения желаемого. К сожалению, вы не можете обрезать текст, используя выражение строкового формата в привязке. Тем не менее, я дам вам несколько вариантов, но я думаю, что самое простое свойство, о котором вы сказали, что не создадите.

Вариант 1: С помощью конвертера: Вы можете создать конвертер и использовать его в связывании:

TrimTextConverter: IValueConverter{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     //Trim your text here 
    } 
} 

ПРОФИ: Это читаемым, когда вы используете его, вы можете четко видеть намерение: <DataGridTextColumn Binding="{Binding type, Converter={StaticResource TrimTextConverter}}" .../>

МИНУСЫ::

  1. Вы должны быть осторожны, потому что если вы установите UpdateSourceTrigger = PropertyChanged в свой привязку, этот конвертор не позволит вам добавить какое-либо пространство.
  2. Для этой функции вам нужно создать другой класс.

Вариант 2: Создать у вас есть DataGridTrimmedTextColumn (наследование):

Таким образом, вы можете наследовать DataGridTextColumn и реализовать функцию обрезки. Так много работы в этом случае (опять же).

Вариант 3: Привязка к свойству с подстриженной значение:

Вы не хотите создать. Но, как я сказал в начале, возможно, самый простой подход.

Надеюсь, это поможет!

Смежные вопросы