Здравствуйте! Программа написанна на WPF MVVM с использованием фреймворка caliburn Micro. Возникла необходимость динамически менять размер шрифта элемента в ListView.
Данная привязка на FontSize не отрабатывает
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="dgffsdgf" FontSize="{Binding Path= FontSizeTb8X2, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
а такая работает нормально:
<TextBlock Name="CurrentFontString" Margin="10" MinHeight="20" FontSize="{Binding Path= FontSizeTb8X2, UpdateSourceTrigger=PropertyChanged}"/>
и такая тоже
<Style x:Key="ListHeaderStyle8X2" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="FontSize" Value="{Binding Path= FontSizeTb8X2, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</Style>
КОД View
<Style x:Key="ListHeaderStyle8X2" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="FontSize" Value="{Binding Path= FontSizeTb8X2, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</Style>
<StackPanel>
<Button Name="FontChoser" Content="ШРИФТ"/>
<TextBlock Name="CurrentFontString"/>
<ListView Name="TestListViewFonts">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource ListHeaderStyle8X2}">
<GridViewColumn Header="Номер">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="dgffsdgf" FontSize="{Binding Path= FontSizeTb8X2, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
КОД ViewModel
private float _fontSizeTb8X2;
public float FontSizeTb8X2
{
get { return _fontSizeTb8X2; }
set
{
_fontSizeTb8X2 = value;
NotifyOfPropertyChange(() => FontSizeTb8X2);
}
}
//Окно настройки шрифта из WinForms
public void FontChoser()
{
var fontDialog = new FontDialog { Font = CurrentFont };
if (fontDialog.ShowDialog() == DialogResult.OK)
{
FontSizeTb8X2 = fontDialog.Font.Size;
CurrentFontString= $@"{FontSizeTb8X2}";
}
}
Привязка не срабатывает, т.к. ListView
(как и любой ItemsControl
) устанавливает контекст своим дочерним элементам на сами элементы привязанной коллекции. Свойства FontSizeTb8X2
в этом контексте, естественно, нет. Поэтому вам нужно использовать RelativeSource
для указания точного пути к этому свойству, например:
FontSize="{Binding Path=DataContext.FontSizeTb8X2,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window},
UpdateSourceTrigger=PropertyChanged}"
или чуть-чуть короче:
FontSize="{Binding DataContext.FontSizeTb8X2,
RelativeSource={RelativeSource FindAncestor, AncestorType=Window},
UpdateSourceTrigger=PropertyChanged}"
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как можно после завершения основной программы запустить файл батник который создался при завершении программы, я сделал через процесс старт...
Пытался сделать, но ввиду while, долго думает программа и вообще наверное способ мой плохой