私はボタンのタグにバインドしたボタンからIDを取得しようとしましたが、試行したときに、コンテキストとテキストを設定することができ、IDが画面に表示されてもnull値エラーがスローされます良い。UWPツールキットPullToRefreshListの項目のインデックスを取得する方法はありますか?
これで、リスト内のアイテムにインデックスを付けると、データテンプレートがそれらを生成するときに簡単に呼び出すことができ、それらをC#コードのIDと比較することができます。リストのための
XAML:イムは、後で取得するためのIDをバインドしようとしているところ
<my:PullToRefreshListView
x:Name="RefreshListView"
MinWidth="200"
Margin="24"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Background="White"
OverscrollLimit="0.4"
PullThreshold="100"
IsPullToRefreshWithMouseEnabled="True">
<my:PullToRefreshListView.ItemTemplate >
<DataTemplate >
<StackPanel Name="ListPanel">
<TextBlock AutomationProperties.Name="IdTextBlock"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Id}"
TextWrapping="WrapWholeWords" />
<TextBlock AutomationProperties.Name="{Binding Name}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Name}"
TextWrapping="WrapWholeWords" />
<TextBlock AutomationProperties.Name="{Binding Sets}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding Sets}"
TextWrapping="WrapWholeWords" />
<TextBlock AutomationProperties.Name="{Binding SetTime}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding SetTime}"
TextWrapping="WrapWholeWords" />
<StackPanel Orientation="Horizontal">
<Button Tag="{Binding Id}" Content="Delete" Click="DelButton_Click" Style="{StaticResource DrillButtons}" ></Button>
<Button Tag="{Binding Id}" Content="Update" Click="UpdateBtn_Click" Style="{StaticResource DrillButtons}" ></Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</my:PullToRefreshListView.ItemTemplate>
<my:PullToRefreshListView.PullToRefreshContent>
<TextBlock FontSize="16"
Opacity="0.5"
Text="Pull down to refresh data" />
</my:PullToRefreshListView.PullToRefreshContent>
</my:PullToRefreshListView
上記スタックパネルからこれらの2つのボタンがあります。ボタンからIDに取る
<StackPanel Orientation="Horizontal">
<Button Tag="{Binding Id}" Content="Delete" Click="DelButton_Click" Style="{StaticResource DrillButtons}" ></Button>
<Button Tag="{Binding Id}" Content="Update" Click="UpdateBtn_Click" Style="{StaticResource DrillButtons}" ></Button>
</StackPanel>
HERESにする方法:
//Update button
private async void NewSubmitBtn_Click(object sender, RoutedEventArgs e)
{
String Name = NewNameBox.Text;
String id = (String)((Button)sender).Content;
int Sets;
int Time;
bool successfullyParsedTime = int.TryParse(NewSetsBox.Text, out Time);
bool successfullyParsedSets = int.TryParse(NewTimeBox.Text, out Sets);
if (successfullyParsedSets)
{
Sets = Int32.Parse(NewSetsBox.Text);
}
if (successfullyParsedTime)
{
Time = Int32.Parse(NewTimeBox.Text);
}
await ctv.combatDrillsTable.UpdateDrill(id, Name, Sets, Time, catagory);
ppup.IsOpen = false;
var addSuccess = new MessageDialog("Drill Updated");
await addSuccess.ShowAsync();
}
HERESにデータ項目コード:私は追加
namespace UWPCombatApp
{
class DrillItem
{
public string Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "sets")]
public int Sets { get; set; }
[JsonProperty(PropertyName = "settime")]
public int SetTime { get; set; }
[JsonProperty(PropertyName = "style")]
public string Style { get; set; }
}
}
削除ポップアップ:
// Delete button
private void DelButton_Click(object sender, RoutedEventArgs e)
{
delpup.Height = Window.Current.Bounds.Height;
delpup.IsOpen = true;
id = (((Button)sender).Tag).ToString();
}
idはthisタグにバインドされています
private async void YesBtn_Click(object sender, RoutedEventArgs e)
{
await ctv.combatDrillsTable.DeleteDrillAsync(id);
var addSuccess = new MessageDialog("Drill Deleted");
await addSuccess.ShowAsync();
}
私はactully前にタグを設定し、updatebtnはNewSubmitBtnを呼び出すポップアップを呼び出します。私はあなたの実装を試みましたが、同じ結果がnullになっています。 – UWP122
@ UWP122もっと多くの情報とコードを提供してください。実際の問題が何であるかは不明です。 ** UpdateBtn_Click **が** NewSubmit_Btn_Click **ハンドラにフックされたボタンを含むMessageDialogを起動する場合、送信者はMessageDialog内のボタンです。そのボタンにもタグが設定されていますか? –
あなたが質問したようにコードを更新しました。基本的なことを明確にするために、リスト内に表示されているデータテンプレートからIDを取得し、アイテムのリストによって提供されるIDを取得します。それをAzureポータルの簡単なテーブルから削除してください。 – UWP122