单击gridview项时共享项目

时间:2016-07-17 12:15:32

标签: c# gridview uwp windows-phone

我是uwp的新手。当有人点击gridview项目但在项目中收到错误时,我想获得共享选项。我觉得我还没有正确使用它。所以帮助我吧。

的.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

1 个答案:

答案 0 :(得分:0)

你看到的原因

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

是因为您试图访问其范围之外的本地变量。

局部变量(see this tutorial)只能在其“范围”内访问。变量作用域由放置变量及其访问修饰符的位置定义。

例如,您的问题是您尝试在定义的函数之外访问本地范围的变量“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";
}

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

如果我尝试访问localToFunctionOne内的FunctionTwo,那么我会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”的类范围变量。