簡體   English   中英

在XAML中使用DataContext將簡單數據綁定到代碼不起作用?

[英]Binding simple data using DataContext in XAML to code not working?

我正在學習WPF,我想將數據從一些文本框中傳遞給代碼:

<Grid Margin="0,0,10,43" Name="dataFrm">
   <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Label Grid.Column="0">Name</Label>
    <Label Grid.Column="0" Grid.Row="1">Code</Label>
    <Label Grid.Column="0" Grid.Row="2">Categry Id</Label>
    <TextBox Grid.Row="0" Grid.Column="1" x:Name="txtName" Text="{Binding Path=Name, UpdateSourceTrigger=LostFocus}" Width="162" Margin="0,0,0,10" HorizontalAlignment="Left"></TextBox>
    <TextBox Grid.Row="1" Grid.Column="1" x:Name="txtCode" Text="{Binding Path=Code, UpdateSourceTrigger=LostFocus}" Width="162" Margin="0,0,0,10" HorizontalAlignment="Left"></TextBox>
    <TextBox Grid.Row="2" Grid.Column="1" x:Name="txtCatId" Text="{Binding Path=CategoryId, UpdateSourceTrigger=LostFocus}" Width="162" Margin="0,0,0,10" HorizontalAlignment="Left"/>
    <Button  Grid.Row="3" Grid.Column="1" x:Name="btnSave" Click="btnSave_Click" Width="142" Content="Save"/>
</Grid>

單擊保存時,我想將檢索到的數據轉換為預定義的類:

private void btnSave_Click(object sender, RoutedEventArgs e)
{
    var productVm = (ClsProducts)dataFrm.DataContext;
    MessageBox.Show(productVm.Name);
}

Cls產品:

public class ClsProducts
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public int CategoryId { get; set; }
}

但是dataFrmDataContextnull

確保設置Grid或其父窗口的DataContext屬性:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ClsProducts();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM