0

私はXAMLでこれをやろうとしています:

TextBox tb = (TextBox)e.Item.FindControl("tvNote");

スクロール ビューアー内にテキスト ボックスがあり、その値を見つける必要があります。これが私のコードです:

         <Grid x:Name="itemDetailGrid" Margin="0,60,0,50">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <Image Grid.Row="1" Margin="0,0,20,0" Width="180" Height="180" Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}" Visibility="Collapsed" />
            <StackPanel x:Name="itemDetailTitlePanel" Grid.Row="1" Grid.Column="1">
                <TextBlock x:Name="itemTitle" Margin="0,-10,0,0" Text="{Binding Name}" Style="{StaticResource SubheaderTextStyle}"/>
                <TextBlock x:Name="itemSubtitle" Margin="0,0,0,20" Text="{Binding Description}" Style="{StaticResource SubtitleTextStyle}"/>

                <TextBlock Grid.Row="2" Grid.ColumnSpan="2" Margin="0,20,0,0" Text="{Binding Price, Mode=TwoWay,Converter={StaticResource PriceValueConverter}}"  Style="{StaticResource BodyTextStyle}"/>
                <TextBox x:Name="tvQuantity"/>
                <TextBox x:Name="tvNotes"/>
                <Button x:Name="btnAdd" Content="Add" Click="btnAdd_Click"/>
            </StackPanel>
        </Grid>
    </ScrollViewer>

ボタン クリックを使用して、TV Note を見つけるにはどうすればよいですか? これが私のボタンクリックです:

public void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        Button btnAdd = (Button)sender;

        int quan = 0;
        bool q = int.TryParse(tvQuantity.Text, out quan);
        if (q == false)
        {
            MessageDialog messageDialog = new MessageDialog("Please enter a valid quantity.", "Quantity Invalid");
            messageDialog.ShowAsync();
            return;
        }

        //this causes an issue for items in an existing order

        Product product = btnAdd.CommandParameter as Product;
        IEnumerable<OrderDetail> query = App.CurrentOrder.OrderDetails.Where(a => a.Name == product.Name);

        if (query.Count() == 0)
        {

            //insert order
            Repository.AddOrderDetail(product.Name, product.Description, product.Price, quan, App.CurrentOrder.Id, tvNote.Text, product.Category);
            MessageDialog messageDialog = new MessageDialog(product.Name + " has been successfully added to your order.", "Item Added");
            messageDialog.ShowAsync();
            messageDialog.Commands.Add(new UICommand("OK", new UICommandInvokedHandler(YesCommandInvokedHandler)));


        }
        else
        {
            OrderDetail orderDetail = btnAdd.CommandParameter as OrderDetail;
            orderDetail.Quantity = quan;
            orderDetail.OrderDetailNote = tvNote.Text;
            Repository.UpdateOrderDetail(orderDetail.Id, orderDetail.Category, orderDetail.Description, orderDetail.Name, orderDetail.OrderDetailNote, orderDetail.OrderId, orderDetail.Price, quan);
            MessageDialog messageDialog = new MessageDialog(orderDetail.Name + " has been successfully updated.", "Item Updated");
            messageDialog.ShowAsync();
        }
4

1 に答える 1

1

XAML に tvNote が表示されませんか? そうですか:

<TextBox x:Name="tvNotes"/>

じゃあ、もしかしてタイプミス?

これが DataTemplate にある場合は、ここに示すように、FindName が機能しないため、別の手法を使用するように切り替える必要があります。

于 2012-09-08T01:53:34.980 に答える