VisualBasic 2010 WPFのData
Visualbasic 2010を利用してWindows Formアプリケーションに
WPFのDataGridを配置しております。
以下の2点の制御を行いたいと考えておりますが、
ご存知の方がいらっしゃればご教授頂けますと幸いです。
(1)フォームよりWPFのDataDrid内の値を編集した場合に
Dattableに反映したい
現在はフォーム側で以下のように参照しています。
Dim dt_row As DataRow
Dim dt_row_view As DataRowView
dt_row_view = CType(Me.DataContext, DataRowView)
dt_row = dt_row_view.Row
(2)DataGridにTextBoxを2つ配置(数量1、数量2)しておりますが、
エンターキー押下時に数量1、数量2の順でカーソル遷移でき
ないでしょうか。
現在はエンターキーを押下すると次の行に遷移してしま
います。
以下にソースの抜粋を掲示致します。
★Form1.vb
(HostedContentName) Item_Main2
Me.Item_Main2.DataContext = dt
※データテーブルにはDBからSELECTした結果をセットしています。
★Item_Main.xaml
<UserControl x:Name="UserControl1" x:Class="Item_Main"
xmlns:local="clr-namespace:TESTアプリ"
<DataGrid x:Name="DataGrid_1" ItemsSource="{Binding}" ScrollViewer.CanContentScroll="True" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Standard" ScrollViewer.IsDeferredScrollingEnabled="True" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility="None" Margin="0,0,0,0" KeyDown="DataGrid_KeyDown">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:Item_Detail />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</
★Item_Detail.xaml.vb
Private Sub Btn_Click(sender As Object, e As Windows.RoutedEventArgs) Handles Btn.Click
Dim dt_row As DataRow
Dim dt_row_view As DataRowView
dim wk_1 as string
'/ 本画面のDataRowを取得
dt_row_view = CType(Me.DataContext, DataRowView)
dt_row = dt_row_view.Row
'/ 画面で編集した値を変数にセット
If COMMON.NullNothingChk(dt_row.Item("数量1")) = False Then
wk_1 = dt_row.Item("数量1").ToString
Else
wk_1 = "0"
End If
'/ 画面で編集した内容をデータテーブルにセットしたい
'/ 今のままではグリッドを再描画すると編集内容がクリアされてしまう
End Sub
★Item_Detail.xaml
<UserControl x:Name="UserControl2" x:Class="Item_Detail"
mc:Ignorable="d"
d:DesignHeight="136" Width="1090" Loaded="UserControl_Loaded">
<Grid Name="GP_Panel" KeyboardNavigation.TabNavigation="Local">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="69*"/>
<ColumnDefinition Width="151*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="Text_ItemCd" Text="{Binding 商品コード}" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" Width="56" Background="{x:Null}" FontFamily="Arial" FontSize="14" VerticalContentAlignment="Center" FontWeight="Bold" IsHitTestVisible="True" Foreground="Black" Margin="4,23,0,93" HorizontalContentAlignment="Center" IsReadOnly="True" IsTabStop="False"/>
<TextBox x:Name="Text_ItemNm" Text="{Binding 商品名}" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" Width="316" Background="{x:Null}" FontFamily="Arial" FontSize="16" VerticalContentAlignment="Center" IsHitTestVisible="True" Foreground="Black" Margin="62,23,0,93" BorderBrush="{x:Null}" Grid.ColumnSpan="2" IsReadOnly="True" IsTabStop="False"/>
<TextBox x:Name="Text_1" Text="{Binding 数量1, Mode=TwoWay, TargetNullValue=0}" HorizontalAlignment="Left" Height="18" Margin="176,102,0,16" TextWrapping="Wrap" Width="60" Background="White" FontFamily="Arial" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontWeight="Medium" Foreground="Black" Grid.Column="1" TabIndex="1" />
<TextBox x:Name="Text_2" Text="{Binding 数量2, Mode=TwoWay, TargetNullValue=0}" HorizontalAlignment="Left" Height="18" Margin="236,102,0,16" TextWrapping="Wrap" Width="60" Background="White" FontFamily="Arial" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontWeight="Medium" Foreground="Black" Grid.Column="1" TabIndex="2" />
</Grid>
</UserControl>
お礼
回答ありがとうございます。AS3ではエラーになるようです。