单击网格视图项时共享项

本文关键字:共享 视图 网格 单击 | 更新日期: 2023-09-27 17:57:13

我是uwp的新手。当有人单击网格视图项目但在项目中出现错误时,我想获得共享选项。我说我没有正确使用它。所以帮帮我。

.xaml

  <GridView x:Name="gridview1" ItemClick="itemclicked">
        <GridView.ItemTemplate>
            <DataTemplate>
                    <Image Source="{Binding image}" Width="120" Height="120" Margin="2"></Image>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

。.cs

    loadData();
    DataTransferManager datatrnsfermanager = DataTransferManager.GetForCurrentView();
    datatrnsfermanager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.shareimagehandler);

    private async void shareimagehandler(DataTransferManager sender, DataRequestedEventArgs e)
    {
        DataRequest request = e.Request;
        request.Data.Properties.Title = "Share image";
        DataRequestDeferral deferral = request.GetDeferral();
          try
            {
                   request.Data.SetBitmap(item);
            }
            finally
            {
                deferral.Complete();
            }

    }
private void itemclicked(object sender, ItemClickEventArgs e)
    {
        var item = gridview1.SelectedItem;
        DataTransferManager.ShowShareUI();
    }

我在

request.Data.SetBitmap(item);

在项目中

The name 'item' does not exist in the current context

单击网格视图项时共享项

你看到的原因

The name 'item' does not exist in the current context

是因为您尝试访问其范围之外的局部变量。

局部变量(请参阅本教程)只能在其"作用域"内访问。变量作用域由放置变量的位置及其访问修饰符定义。

例如,您的问题是您尝试在定义它的函数之外访问局部范围的变量"item"。

public static void FunctionOne(){
    string localToFunctionOne = "This variable can only be used inside of Function One";
}
public static void FunctionTwo(){
    string localToFunctionTwo = "This variable can only be used inside of Function Two";
}

在上面的示例中,您只能在声明它们的函数中使用这些变量。

如果我尝试访问FunctionTwo内部的localToFunctionOne,那么我会得到The variable localToFunctionOne does not exist in the current context

这是您创建的方案,也是您收到此错误的原因。

为了解决这个问题,您可以采取几种不同的途径。但是,我认为您要采取的路径是创建一个范围限定为类的变量。

 public static class MyVariableExampleClass{
   public static string globalVariable = "All functions in this class can see this variable";
   public static void FunctionOne(){
       string varibleForFunctionOne = globalVariable;
    }
   public static void FunctionTwo(){
       string varibleForFunctionOne = globalVariable;
   }
}

从此示例中可以看到,您可以从两个函数访问名为"globalVariable"的类范围变量。