2016-07-17 4 views
0

Я новичок в uwp. Я хочу получить опцию share, когда кто-то нажимает на элемент gridview, но получает ошибку в элементе. Я так не использовал его должным образом. так помогите мне в этом.пункт обмена, когда нажата кнопка 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 
+0

Ehh Какая ошибка? –

+0

Я получаю ошибку в этой строке request.Data.SetBitmap (item); Имя «элемент» не существует в текущем контексте – Ravi

+0

Мне нужно увидеть, что такое ошибка, и по какой строке мы не можем помочь –

ответ

0

Причина вы видите

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

потому, что вы пытаетесь получить доступ к локальной переменной вне ее сферы.

Локальные переменные (see this tutorial) могут быть доступны только в пределах их «области действия». Область переменных определяется тем, где вы помещаете переменную и ее модификаторы доступа.

Например, ваша проблема в том, что вы пытаетесь получить доступ к локально область видимости переменной «пункт» вне функции она определена в.

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» из обеих функций.