728x90
반응형

개행시 
 를 사용

<TextBlock Text="Test&#10;Group"/>

[결과]
Test
Group

 

 

728x90
반응형
728x90
반응형

XAML 에서 소수점 숫자를 3자리 까지만 표현하고자 할 때 아래처럼 사용하면 된다.

 

 

 

<TextBlock Text="{Binding Number, StringFormat={}Y:{0:0.###}}" />

 

 

Number : 56.235487

결과

Y:56.235

728x90
반응형
728x90
반응형

Property 중 특정 두 값이 조건에 해당 되는 경우 처리를 위해서는 MiltiDataTrigger 를 사용합니다.

 

아래는 StringData1 속성의 값이 "Data1" 이고 StringData2 값이 "Data2" 인경우

Grid 를 숨기는(Visibility=Collapsed) 처리를 합니다.

 

 

    <Grid>

        <Grid.Style>

            <Style TargetType="Grid">

                <Style.Triggers>

                    <MultiDataTrigger>

                        <MultiDataTrigger.Conditions>

                            <Condition Binding="{Binding StringData1}" Value="Data1"/>

                            <Condition Binding="{Binding StringData2}" Value="Data2"/>

                        </MultiDataTrigger.Conditions>

                        <Setter Property="Visibility" Value="Collapsed"/>

                    </MultiDataTrigger>

                </Style.Triggers>

            </Style>

        </Grid.Style>

    </Grid>

 

 

728x90
반응형
728x90
반응형

MultiDataTrigger 는 And 조건을 처리하고

OR 조건은 DataTrigger 를 두개 사용하여 처리합니다.

 

아래는 StringData(string) Property 에 null, 공백여부 두가지를 or 조건으로 처리한 내용입니다.

 

 

        <DataTrigger Binding="{Binding StringData}" Value="{x:Null}">

            <Setter Property="Visibility" Value="Hidden" />

        </DataTrigger>

        <DataTrigger Binding="{Binding StringData}" Value="{x:Static System:String.Empty}" >

            <Setter Property="Visibility" Value="Hidden" />

        </DataTrigger>

 

 

 

728x90
반응형
728x90
반응형

ListView 내부의 Button 클릭시

해당 버튼이 속해있는 Item 을 가져오는 방법입니다.

 

 

 

private void DeleteButton_Click(object sender, RoutedEventArgs e)

{

    var listViewItem = (ListViewItem)listView.ItemContainerGenerator.ContainerFromItem(((Button)sender).DataContext);

   TestItemModel testItemModel = listViewItem.Content as TestItemModel;

}

 

 

728x90
반응형
728x90
반응형
<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ContentPresenter/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListView.ItemContainerStyle>

선택한 항목에 대해서 표시를 하고 싶지 않을 때 사용합니다.

* 선택에 대한 이벤트도 타지 않으니 단순 표시를 위해서만 사용합니다.

728x90
반응형
728x90
반응형
<ListView ItemsSource="{Binding .}"> 
    <ListView.ItemsPanel> 
        <ItemsPanelTemplate> 
            <StackPanel Orientation="Horizontal"></StackPanel> 
        </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
        <DataTemplate> 
            <Button Content="{Binding IndexNumber}" Width="20"/> 
        </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

버튼을 가로로 나타낸다.

<ItemsControl ItemsSource="{Binding.}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate> 
            <Button Content="{Binding IndexNumber}" Width="20"/> 
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

ItemsPanel 의 ItemsPanelTemplate 을 이용해서 정렬 기준을 정할 수 있다.

728x90
반응형
728x90
반응형

하나의 Grid 안에서 두개의 사각형이 있는 경우 이를 서로 영향받을수 있도록 처리하기 위해서 DataDataTrigger 를 이용하면된다.

아래 예시는 하나의 사각형에 마우스가 간 경우 다른 하나의 사각형 컨트롤이 숨겨져있다가 보여지는 처리를 한것이다

<Window x:Class="WpfAppControlTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppControlTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid HorizontalAlignment="Center">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="100"/>
        </Grid.ColumnDefinitions>

        <Rectangle x:Name="B" Grid.Column="0" Fill="Green" Width="100" Height="100"/>

        <Rectangle x:Name="C" Grid.Column="1" Fill="Yellow" Width="100" Height="100">
            <Rectangle.Style>
                <Style TargetType="Rectangle">
                    <Setter Property="Visibility" Value="Collapsed"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=B,Path=IsMouseOver}" Value="True">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Rectangle.Style>
        </Rectangle>
    </Grid>
</Window>

Grid 의 Trigger 을 통해 처리하는 것을 불가능하며 위 처럼 영향 받고자 하는 컨트롤에 처리를 해주어야한다.

참고 : stackoverflow.com/questions/4208731/create-a-simple-wpf-trigger-on-one-object-that-affects-another

 

728x90
반응형
728x90
반응형
<Window x:Class="WpfAppControlTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppControlTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <Style x:Key="Flat">
            <Setter Property="Control.Background" Value="{x:Null}" />
            <!--<Setter Property="Control.BorderBrush" Value="{x:Null}" />-->
            <Style.Triggers>
                <Trigger Property="Control.IsMouseOver" Value="True">
                    <Setter Property="Control.Background" Value="{x:Null}" />
                    <!--<Setter Property="Control.BorderBrush" Value="{x:Null}" />-->
                    <Setter Property="Control.FontWeight" Value="Bold" />
                </Trigger>
                <Trigger Property="Control.IsFocused" Value="True">
                    <Setter Property="Control.FontWeight" Value="Bold" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <Button Style="{StaticResource Flat}" Width="100">Hello</Button>
    </StackPanel>
</Window>

테두리도 보기 싫다면 주석 되있는 내용을 주석처리를 풀면된다.

 

728x90
반응형
728x90
반응형

컨트롤의 Background 를 Transparent 로 하게되면

해당 컨트롤 뒤쪽에 배치된 컨트롤들에 마우스 오버이벤트나 툴팁처리를 한경우 작동하지 않게됩니다.

하지만 Background 를 {x:Null} 로 지정하게되면

뒤쪽에 배치된 컨트롤들의 이벤트 처리가 가능해 집니다.

 

아래처럼 {x:Null} 로 된 경우 ToolTip 이 제대로 표시되지만 

    <Grid>
        <Label Content="null 과 transoarent" ToolTip="ToolTip!!" Height="30" Width="300"/>
        <Border Name="Button1" Height="30" Width="300" BorderBrush="Yellow" Background="{x:Null}" BorderThickness="1"/>
    </Grid>

아래처럼 Transparent 로 된 경우 ToolTip 이 표시되지 않습니다.

    <Grid>
        <Label Content="null 과 transoarent" ToolTip="ToolTip!!" Height="30" Width="300"/>
        <Border Name="Button1" Height="30" Width="300" BorderBrush="Yellow" Background="Transparent" BorderThickness="1"/>
    </Grid>

728x90
반응형

+ Recent posts