[WPF] DataGridについて

WPFのDataGridの備忘録です。

■DataGridを更新させたくない場合は、IsReadOnly=”True”を使います。
 また、表示ように作成したDataGridにDataTableをItemsSouceに指定すると、最後に不要な空行が表示されてしまいます。
 そんな時も、IsReadOnly=”True”ですっきりです^^

■常に縦スクロールバーを表示するには、
 VerticalScrollBarVisibility=”Visible”を設定します。

[WPF] StringFormatについて

WPFのDataGrid内でのStringFormatについての備忘録です。
DataGrid以外でも同じと思いますが、確かめていません。

今回行いたかったことは、LabelのContextにBindeingする際に、固定文字列(電話番号)をデータに付加したかったので、
以下のようにコーディングしたところ、正常に動きませんでした。。。
 Context=”{Binding Path=TEL, StringFormat=電話番号:{0}}”
ところが、下のようにしたら上手く動きました^^
 Content=”{Binding Path=TEL}” ContentStringFormat=”{}電話番号:{0}”

ちなみに、TextBoxでは下でも正常に動きます。。。。?奥が深いなぁ~
 Text=”{Binding Path=TEL, StringFormat=電話番号:{0}}”

こういうのも有ります。
 Text=”{Binding Path=Price, StringFormat=価格:{0:C}, ConverterCulture=ja-JP}”
 Text=”{Binding Path=Price, StringFormat=価格:{0:N0}円}”

[WPF] 右上の閉じるボタンの無効化

右上の閉じるボタンを無効化し、ダイアログWindowなどの誤閉じを防止する。

1)次のクラスを作成する。
Imports System.Windows.Interop
Public Class ClassNotClose
    <System.Runtime.InteropServices.DllImport(“user32.dll”)> _
    Shared Function GetSystemMenu(ByVal hWnd As IntPtr, _
                                  ByVal bRevert As Boolean) As IntPtr
    End Function

    <System.Runtime.InteropServices.DllImport(“user32.dll”)> _
    Shared Function EnableMenuItem(ByVal hWnd As IntPtr, _
                                   ByVal uIDEnableItem As UInteger, _
                                   ByVal uEnable As UInteger) As Boolean
    End Function

    Private Const MF_BYCOMMAND As UInteger = &H0
    Private Const MF_GRAYED As UInteger = &H1
    Private Const SC_CLOSE As UInteger = &HF060

    Private hwndSource As HwndSource = Nothing

    Public Sub DisEnable(winHndl As Object)
        Dim hwnd As IntPtr
        hwnd = DirectCast(PresentationSource.FromVisual(winHndl), HwndSource).Handle
        Dim hMenu As IntPtr = GetSystemMenu(hwnd, False)
        If hMenu <> IntPtr.Zero Then
            EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED)
        End If
    End Sub
End Class

2)閉じさせたくないWindowから呼び出す。(Loadedの中で等)
Dim oNotClose As New ClassNotClose
Private Sub Window2_Loaded(sender As Object, e As ystem.Windows.RoutedEventArgs) Handles Me.Loaded
        oNotClose.DisEnable(Me)
End Sub

[WPF] Windowサイズを変更不可にする

Windowサイズを変更させたくない場合、次のように赤文字列をXAMLに記述します。

<Window x:Class=”Window2″
    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation
    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml
    Title=”Window2″ Height=”300″ Width=”300″
    ResizeMode=”NoResize”>

ただ、右上に「☓」が出たままですが。。。